1 Commits

Author SHA1 Message Date
Zacharias f6d75db8b6 Add README.md 2026-05-08 16:53:52 +02:00
15 changed files with 487 additions and 227 deletions
-1
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings"> <component name="GradleSettings">
<option name="linkedExternalProjectsSettings"> <option name="linkedExternalProjectsSettings">
<GradleProjectSettings> <GradleProjectSettings>
+3
View File
@@ -0,0 +1,3 @@
# NCPC
Hi, this is my journy thru out NCPC, check the forks for the year you are intrested to check.
@@ -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);
}
}
}
@@ -1,23 +0,0 @@
package com.kattis.ncpc26.p3.pending;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class A {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(reader.readLine());
String s = reader.readLine();
String[] nums = s.split(" ");
for(int i = 1; i <= num; i++){
if(!(nums[i-1].equals("mumble") || Integer.parseInt(nums[i-1]) == i))
{
System.out.println("something is fishy");
return;
}
}
System.out.println("makes sense");
}
}
@@ -1,112 +0,0 @@
package com.kattis.ncpc26.p3.pending;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class B {
public static void main(String[] args) throws IOException {
Map<Integer, Set<Integer>> exclusiveFollowing = new HashMap<>();
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String in = reader.readLine();
int N = Integer.parseInt(in.split(" ")[0]);
int M = Integer.parseInt(in.split(" ")[1]);
for(int i = 0; i < M; i++)
{
in = reader.readLine();
int u = Integer.parseInt(in.split(" ")[0]);
int v = Integer.parseInt(in.split(" ")[1]);
Set<Integer> followings = exclusiveFollowing.getOrDefault(v, new HashSet<>());
followings.add(u);
exclusiveFollowing.put(v, followings);
}
ArrayList<Pair<Integer, Integer>> sortedFollowings = new ArrayList<>();
for(Map.Entry<Integer, Set<Integer>> user : exclusiveFollowing.entrySet())
{
int me = user.getKey();
int likesMe = 0;
for(int i : user.getValue())
{
if(!exclusiveFollowing.getOrDefault(i, new HashSet<>()).contains(me))
{
likesMe++;
}
}
sortedFollowings.add(new Pair<>(me, likesMe));
}
int mostFollowedUser = 1, followers = 0;
for(Pair<Integer, Integer> user : sortedFollowings)
{
if(user.value > followers)
{
mostFollowedUser = user.key;
followers = user.value;
}
else if(user.value == followers)
{
if(user.key < mostFollowedUser)
{
mostFollowedUser = user.key;
}
}
}
System.out.printf("%d %d", mostFollowedUser, followers);
}
public static class Pair<K, V> {
/**
* The key of the pair.
*/
private K key;
/**
* The value of the pair.
*/
private V value;
/**
* Creates a new instance of Pair.
* @param key The key of the pair
* @param value The value of the pair
*/
public Pair(K key, V value) {
this.key = key;
this.value = value;
}
/**
* Gets the key of the pair.
* @return The key of the pair
*/
public K getKey() {
return key;
}
/**
* Gets the value of the pair.
* @return The value of the pair
*/
public V getValue() {
return value;
}
/**
* Sets the key of the pair.
* @param key The key of the pair
*/
public void setKey(K key) {
this.key = key;
}
/**
* Sets the value of the pair.
* @param value The value of the pair
*/
public void setValue(V value) {
this.value = value;
}
}
}
@@ -1,91 +0,0 @@
package com.kattis.ncpc26.p3.pending;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class D {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String in;
int num = 0;
while(!(in = reader.readLine()).equals("0 0"))
{
Map<Integer, Set<Integer>> knownNumbers = new HashMap<>();
int p = Integer.parseInt(in.split(" ")[0]);
int c = Integer.parseInt(in.split(" ")[1]);
if(p == 1)
{
System.out.println("No");
continue;
}
for(int i = 0; i < c; i++)
{
in = reader.readLine();
int a = Integer.parseInt(in.split(" ")[0]);
int b = Integer.parseInt(in.split(" ")[1]);
if(!(a < p || b < p || a == b))
{
continue;
}
Set<Integer> numbersKnown = knownNumbers.getOrDefault(a, new HashSet<>());
numbersKnown.add(b);
knownNumbers.put(a, numbersKnown);
numbersKnown = knownNumbers.getOrDefault(b, new HashSet<>());
numbersKnown.add(a);
knownNumbers.put(b, numbersKnown);
}
Set<Integer> reached = new HashSet<>();
ArrayList<Integer> toTraverse = new ArrayList<>();
toTraverse.add(0);
while(!toTraverse.isEmpty())
{
int node = toTraverse.getFirst();
toTraverse.removeFirst();
if(reached.contains(node)) continue;
knownNumbers.getOrDefault(node, new HashSet<>()).forEach(
(num1) -> {
if(!toTraverse.contains(num1) && !reached.contains(num1))
{
toTraverse.add(num1);
}
}
);
reached.add(node);
}
if(reached.size() < p)
{
System.out.println("Yes");
continue;
}
boolean prematureExit = false;
for(Map.Entry<Integer, Set<Integer>> e : knownNumbers.entrySet())
{
if(e.getValue().size() <= 1)
{
System.out.println("Yes");
prematureExit = true;
break;
}
}
if(!prematureExit)
{
System.out.println("No");
}
}
}
}
+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));
}
}