2 Commits
Author SHA1 Message Date
Zacharias f6d75db8b6 Add README.md 2026-05-08 16:53:52 +02:00
Zacharias 39396cedd3 NCPC25 finished 2025-10-04 16:00:04 +02:00
24 changed files with 524 additions and 19 deletions

No files matched your search

File renamed without changes.
-2
View File
@@ -3,8 +3,6 @@
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
+16
View File
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="FrameworkDetectionExcludesConfiguration">
<file type="web" url="file://$PROJECT_DIR$" />
</component>
<component name="KubernetesApiProvider"><![CDATA[{}]]></component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_21" default="true" project-jdk-name="corretto-21" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
+2 -2
View File
@@ -1,3 +1,3 @@
# NCPC26 final practive
# NCPC
This branch contaisn the code from the final practice(18th september 2026) for NCPC26!
Hi, this is my journy thru out NCPC, check the forks for the year you are intrested to check.
@@ -2,7 +2,7 @@ plugins {
id 'java'
}
group = 'com.kattis.ncpc26.pf'
group = 'org.example'
version = '1.0-SNAPSHOT'
repositories {
@@ -10,7 +10,7 @@ repositories {
}
dependencies {
testImplementation platform('org.junit:junit-bom:6.0.0')
testImplementation platform('org.junit:junit-bom:5.10.0')
testImplementation 'org.junit.jupiter:junit-jupiter'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
@@ -1,6 +1,6 @@
#Fri Sep 18 10:45:37 CEST 2026
#Sat Oct 04 11:03:43 CEST 2025
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
View File
File renamed without changes.
File renamed without changes.
-10
View File
@@ -1,10 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Ignored default folder with query files
/queries/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
@@ -1 +0,0 @@
rootProject.name = 'NCPC26-practive-final'
+1
View File
@@ -0,0 +1 @@
rootProject.name = 'NCPC-g'
@@ -0,0 +1,40 @@
package com.kattis.ncpc25.log.rider;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;
public class A {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int[] nums = getComponents(Integer.parseInt(in.readLine()));
System.out.println(nums[0] + " " + nums[1]);
}
public static int[] getComponents(int input)
{
int num = new Random().nextInt(-999, 1000);
int num2 = 0;
if(num == 0)
{
num = new Random().nextInt(-999, 1000);
}
if(num < input)
{
num2 = input-num;
}
else if (input < 0 && input < num) {
num2 = input - num;
}
else if (num > input) {
num2 = input - num;
}
else{
num +=1;
num2 -= 1;
}
if(num >= 1000 || num <= -1000 || num2 >= 1000 || num2 <= -1000)
return getComponents(input);
return new int[]{num, num2};
}
}
@@ -0,0 +1,118 @@
package com.kattis.ncpc25.log.rider;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.MissingFormatArgumentException;
public class C {
public static final int MINUTES_IN_A_DAY = 1_440;
public static void main(String[] args) throws Exception{
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String start = in.readLine();
String end = in.readLine();
String out = countTime(start, end);
System.out.println(out);
}
public static String countTime(String start, String end)
{
if(start.equalsIgnoreCase(end))
{
return "7 days";
}
int startTime = formatedTimeToMin(start);
int endTime = formatedTimeToMin(end);
if(endTime < startTime)
{
endTime += MINUTES_IN_A_DAY*7;
}
int totalTime = endTime-startTime;
int days = totalTime / MINUTES_IN_A_DAY;
int hours = (totalTime - (days * MINUTES_IN_A_DAY)) / 60;
int minutes = (totalTime - (days * MINUTES_IN_A_DAY) - (hours * 60));
int components = 0;
if(days > 0)
{
components += 1;
}
if(hours > 0)
{
components += 1;
}
if(minutes > 0)
{
components += 1;
}
StringBuilder out = new StringBuilder();
if(days > 0)
{
out.append(days).append(" day").append((days == 1?"":"s"));
}
if(hours > 0)
{
if(!out.isEmpty())
{
if(components == 2)
{
out.append(" and ");
}
else {
out.append(", ");
}
}
out.append(hours).append(" hour").append((hours == 1?"":"s"));
}
if(minutes > 0)
{
if(!out.isEmpty())
{
if(components == 2)
{
out.append(" and ");
}
else {
out.append(", ");
}
}
out.append(minutes).append(" minute").append((minutes == 1?"":"s"));
}
return out.toString();
}
public static int formatedTimeToMin(String formated)
{
String day, time;
day = formated.split(" ")[0];
time = formated.split(" ")[1];
int min = 0;
min += switch (day) {
case "Mon" -> MINUTES_IN_A_DAY;
case "Tue" -> MINUTES_IN_A_DAY*2;
case "Wed" -> MINUTES_IN_A_DAY*3;
case "Thu" -> MINUTES_IN_A_DAY*4;
case "Fri" -> MINUTES_IN_A_DAY*5;
case "Sat" -> MINUTES_IN_A_DAY*6;
case "Sun" -> MINUTES_IN_A_DAY*7;
default -> 0;
};
String hour = time.split(":")[0];
String minute = time.split(":")[1];
min += Integer.parseInt(minute);
min += Integer.parseInt(hour)*60;
return min;
}
}
@@ -0,0 +1,61 @@
package com.kattis.ncpc25.log.rider;
import java.awt.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
public class D {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(in.readLine());
Point[] points = new Point[count];
for(int i = 0; i < count; i++)
{
String line = in.readLine();
int n1 = Integer.parseInt(line.split(" ")[0]);
int n2 = Integer.parseInt(line.split(" ")[1]);
points[i] = new Point(n1, n2);
}
double length = getTotalLength(points);
System.out.println(length);
}
public static double getTotalLength(Point[] points)
{
points = sort(points);
double out = 0;
Point pLast = null;
for(Point p : points)
{
if(pLast == null)
{
pLast = p;
continue;
}
out += pLast.distance(p);
}
return out;
}
public static Point[] sort(Point[] in)
{
ArrayList<Point> out = new ArrayList<>();
ArrayList<Point> left = new ArrayList<>(Arrays.stream(in).toList());
Point p1, p2, p3;
if(!left.isEmpty()) p1 = left.removeFirst();
if(!left.isEmpty()) p2 = left.removeFirst();
if(!left.isEmpty()) p3 = left.removeFirst();
//if(p3 == null)
//{
// out.put
//}
//if(p1.distance(p3))
return out.toArray(new Point[0]);
}
}
@@ -0,0 +1,18 @@
package com.kattis.ncpc25.log.rider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
public class G {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int n,m,k;
String line = in.readLine();
n = Integer.parseInt(line.split(" ")[0]);
m = Integer.parseInt(line.split(" ")[1]);
k = Integer.parseInt(line.split(" ")[2]);
}
}
@@ -0,0 +1,67 @@
package com.kattis.ncpc25.log.rider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
public class J {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = in.readLine();
long N = Long.parseLong(line.split(" ")[0]);
long E = Long.parseLong(line.split(" ")[1]);
String out = jump(N, E);
System.out.println(out);
}
public static String jump(long N, long E)
{
ArrayList<Integer> levels = new ArrayList<>();
int count = 0;
int diff = 0;
long time = 0;
boolean inf = false;
boolean first = true;
do
{
time += E;
if(time % N == 0 && !first)
{
E++;
if(count < 11){
diff++;
count++;
}
}
else
{
E--;
if(count < 11){
diff--;
count++;
}
}
if(count >= 10)
{
if(diff == 0)
{
inf = true;
break;
}
}
if(first) first = false;
}
while (E > 0);
if(inf)
{
return "infinity";
}
else
{
return time+"";
}
}
}
@@ -0,0 +1,41 @@
package com.kattis.ncpc25.log.rider;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class K {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(in.readLine());
String[] signs = new String[num];
for(int i = 0; i < num; i++)
{
signs[i] = in.readLine();
}
int lastTop = 0;
int lastTopRound = 0;
for(String l : signs)
{
if(l.equalsIgnoreCase("/"))
{
System.out.println(lastTopRound);
continue;
}
int limit = Integer.parseInt(l);
if(limit > lastTopRound)
{
int tmp = (int)Math.ceil(limit/10.0)*10;
if(tmp == 90)
{
lastTopRound = 100;
}
else if(tmp <= 160)
{
lastTopRound = tmp;
}
}
System.out.println(limit);
}
}
}
+39
View File
@@ -0,0 +1,39 @@
import com.kattis.ncpc25.log.rider.A;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class ATest {
@Test
public void ATests()
{
assertTrue(test(-4));
assertTrue(test(57));
assertTrue(test(-302));
assertTrue(test(476));
assertTrue(test(999));
assertTrue(test(-999));
assertTrue(test(0));
}
public boolean test(int in)
{
int[] nums = A.getComponents(in);
int num = nums[0] + nums[1];
if(nums[0] == 0 || nums[1] == 0){
System.out.println("etleast one is 0");
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
return false;
}
if((""+Math.abs(nums[0])).length() >= 4 || (""+Math.abs(nums[1])).length() >= 4){
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
return false;
}
if(num != in)
{
System.out.println(in + " = " + nums[0] + " + " + nums[1]);
return false;
}
return true;
}
}
+18
View File
@@ -0,0 +1,18 @@
import com.kattis.ncpc25.log.rider.C;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CTest {
@Test
public void CTestCases()
{
assertEquals("7 hours", C.countTime("Mon 08:00", "Mon 15:00"));
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
assertEquals("2 minutes", C.countTime("Mon 08:00", "Mon 08:02"));
assertEquals("1 hour and 59 minutes", C.countTime("Mon 22:00", "Mon 23:59"));
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
assertEquals("7 days", C.countTime("Mon 08:00", "Mon 08:00"));
}
}
+22
View File
@@ -0,0 +1,22 @@
import com.kattis.ncpc25.log.rider.D;
import org.junit.jupiter.api.Test;
import java.awt.*;
import static org.junit.jupiter.api.Assertions.*;
public class DTest {
@Test
public void DTests()
{
assertTrue(testMaxDiff(D.getTotalLength(new Point[]{new Point(-1, -7), new Point(-1, -11), new Point(0, -9), new Point(2, 2), new Point(1, -2), new Point(-2, -1), new Point(3, 1), new Point(-1, -5), new Point(0, -3), new Point(-3, -11)}), 17.186912));
assertTrue(testMaxDiff(D.getTotalLength(new Point[]{new Point(1, 0), new Point(0,0), new Point(1,1)}), 2));
}
public boolean testMaxDiff(double value, double excpected)
{
if(value == excpected) return true;
return value <= excpected + Math.pow(10, -6) && value >= excpected - Math.pow(10, -6);
}
}
+60
View File
@@ -0,0 +1,60 @@
import com.kattis.ncpc25.log.rider.J;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class JTest {
@Test
public void JTest1()
{
assertEquals("59",J.jump(7, 9));
}
@Test
public void JTest2()
{
assertEquals("infinity", J.jump(7,4));
}
@Test
public void JTest9()
{
assertEquals("infinity", J.jump(7,4));
}
@Test
public void JTest3()
{
assertEquals("7581167638793024", J.jump(100001, 123123123));
}
@Test
public void JTest4()
{
assertEquals("infinity", J.jump(5, 3));
}
@Test
public void JTest5()
{
assertEquals("0", J.jump(1, 0));
}
@Test
public void JTest6()
{
assertEquals("21", J.jump(16, 6));
}
@Test
public void JTest7()
{
assertEquals("10", J.jump(11, 4));
}
@Test
public void JTest8()
{
assertEquals("210", J.jump(67, 20));
}
}