結果
| 問題 |
No.78 クジ付きアイスバー
|
| コンテスト | |
| ユーザー |
uafr_cs
|
| 提出日時 | 2015-06-17 01:07:10 |
| 言語 | Java (openjdk 23) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,318 bytes |
| コンパイル時間 | 2,138 ms |
| コンパイル使用メモリ | 78,220 KB |
| 実行使用メモリ | 45,740 KB |
| 最終ジャッジ日時 | 2024-10-06 17:06:15 |
| 合計ジャッジ時間 | 11,257 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 14 WA * 1 TLE * 1 -- * 19 |
ソースコード
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static long simulate(final int N, int[] S, long K, final long initial_bonus){
long bonus = initial_bonus;
long cost = 0;
for(long i = 0; i < K; i++){
final int index = (int)(i % N);
if(bonus > 0){
bonus--;
}else{
cost++;
}
bonus += S[index];
}
return cost;
}
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
final int N = sc.nextInt();
final long K = sc.nextLong();
char[] inputs = sc.next().toCharArray();
int[] S = new int[N];
for(int i = 0; i < N; i++){ S[i] = Character.getNumericValue(inputs[i]); }
int one_cycle_cost = 0, one_cycle_bonus = 0;
for(int i = 0; i < N; i++){
if(one_cycle_bonus > 0){
one_cycle_bonus--;
}else{
one_cycle_cost++;
}
one_cycle_bonus += S[i];
}
if(one_cycle_bonus > 0){
final int infinit_turns = (one_cycle_cost + one_cycle_bonus - 1) / one_cycle_bonus;
final long infinite_N = infinit_turns * N;
if(infinite_N <= N){
System.out.println(infinit_turns * one_cycle_cost);
}else{
System.out.println(simulate(N, S, K, 0));
}
}else{
System.out.println((K / N * one_cycle_cost) + simulate(N, S, K % N, 0));
}
}
}
uafr_cs