結果

問題 No.3557 KCPC or KUPC 2
コンテスト
ユーザー shin
提出日時 2026-06-20 15:53:59
言語 Java
(openjdk 25.0.2)
コンパイル:
javac -encoding UTF8 _filename_
実行:
java -ea -Xmx700m -Xss256M -DONLINE_JUDGE=true _class_
結果
AC  
実行時間 61 ms / 2,000 ms
コード長 1,169 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 4,858 ms
コンパイル使用メモリ 86,292 KB
実行使用メモリ 41,692 KB
最終ジャッジ日時 2026-06-20 15:54:12
合計ジャッジ時間 11,497 ms
ジャッジサーバーID
(参考情報)
judge3_1 / judge1_0
このコードへのチャレンジ
(要ログイン)
サブタスク 配点 結果
部分点1 10 % AC * 30
部分点2 40 % AC * 30
部分点3 50 % AC * 30
合計 100 点
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

import java.util.Scanner;

public class No3557 {
	
	static long n;

	public static void main(String[] args) {
		
		Scanner scanner = new Scanner((System.in));
		n = scanner.nextLong();
		
		long[] a = new long[3] , d = new long[3];
		
		for(int i = 0;i < 3;i++) {
			a[i]= scanner.nextLong(); 
		}
		for(int i = 0;i < 3;i++) {
			d[i] = scanner.nextLong();
		}
		
		scanner.close();
		
		long k1 = calc(0 ,0, a[1], a) , k2 = calc(0 , 0, a[1], d);
		
		if(k1 < k2) {
			System.out.println("KCPC");
		}else if(k1 == k2) {
			System.out.println("Same");
		}else {
			System.out.println("KUPC");
		}
		
		
	}

	
	public static long calc(long sum0, long k0 , long k1 , long[] ad) {
		long result = 0;
		
		long sum = getsum(k1, ad);
		
		if(n > sum) {
			result = calc (sum ,k1 , 2*k1, ad);
		}else if(n == sum) {
			result = k1;
		}else {
			
			if(getsum(k1-1, ad) < n) {
				result = k1;
			}else {
				result = calc(sum0 ,k0, (long)Math.ceil((k0+k1)/2), ad);
			}
		}
		
		return result;
		
		
	}
	
	public static long getsum(long k1 ,long[] ad) {
		
		long d = k1 / ad[1] ,r = k1 % ad[1];
		return d*ad[0]*ad[1] + d*(d-1)*ad[1]*ad[2]/2 + (ad[0] + d*ad[2])*r;
		
	}

}
0