結果
| 問題 |
No.74 貯金箱の退屈
|
| コンテスト | |
| ユーザー |
ぴろず
|
| 提出日時 | 2015-04-19 12:59:40 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 136 ms / 5,000 ms |
| コード長 | 973 bytes |
| コンパイル時間 | 2,354 ms |
| コンパイル使用メモリ | 77,528 KB |
| 実行使用メモリ | 41,628 KB |
| 最終ジャッジ日時 | 2024-07-04 17:53:18 |
| 合計ジャッジ時間 | 7,085 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 30 |
ソースコード
package no074;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] a = new int[n+1][n];
int[] d = new int[n];
int[] w = new int[n];
for(int i=0;i<n;i++) {
d[i] = sc.nextInt();
}
for(int i=0;i<n;i++) {
w[i] = sc.nextInt();
}
for(int i=0;i<n;i++) {
int f1 = (i+d[i])%n;
int f2 = ((i-d[i])%n+n)%n;
a[i][f1] = a[i][f2] = 1;
a[n][i] = 1 - w[i];
}
int rank = 0;
for(int j=0;j<n;j++) {
for(int i=rank;i<n;i++) {
if (a[i][j] == 0) {
continue;
}
int[] temp = a[rank];
a[rank] = a[i];
a[i] = temp;
for(int k=rank+1;k<=n;k++) {
if (a[k][j] == 1) {
for(int l=0;l<n;l++) {
a[k][l] ^= a[rank][l];
}
}
}
rank++;
}
}
boolean flag = true;
for(int i=0;i<n;i++) {
if (a[n][i] == 1) {
flag = false;
}
}
System.out.println(flag ? "Yes" : "No");
}
}
ぴろず