結果
| 問題 |
No.74 貯金箱の退屈
|
| コンテスト | |
| ユーザー |
kuuso1
|
| 提出日時 | 2014-11-21 01:21:50 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,788 bytes |
| コンパイル時間 | 1,158 ms |
| コンパイル使用メモリ | 108,288 KB |
| 実行使用メモリ | 20,480 KB |
| 最終ジャッジ日時 | 2025-01-02 19:49:19 |
| 合計ジャッジ時間 | 3,561 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | RE * 30 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections;
using System.Collections.Generic;
class TEST{
static void Main(){
Sol mySol =new Sol();
mySol.Solve();
}
}
class Sol{
public void Solve(){
E=new List<int>[N];
for(int i=0;i<N;i++)E[i]=new List<int>();
Mono=new HashSet<int>();
for(int i=0;i<N;i++){
E[(i+D[i])%N].Add((N+i-D[i])%N);
E[(N+i-D[i])%N].Add((i+D[i])%N);
if((N+i-D[i])%N == (i+D[i])%N )Mono.Add((i+D[i])%N);
}
visited=new bool[N];
compo=new int[N];
int c=0;
for(int i=0;i<N;i++){
if(!visited[i])dfs(i,++c);
}
bool chk=true;
for(int i=1;i<=c;i++){
int sum=0;
bool clear=false;
for(int j=0;j<N;j++){
if(compo[j]==i){
if(W[j]==0)sum++;
if(Mono.Contains(j))clear=true;
}
}
if(!clear && sum%2==1)chk=false;
}
Console.WriteLine(chk?"Yes":"No");
}
bool[] visited;
int[] compo;
void dfs(int now,int c){
compo[now]=c;
visited[now]=true;
foreach(int next in E[now]){
if(!visited[next])dfs(next,c);
}
}
HashSet<int> Mono;
List<int>[] E;
int N;
int[] D;
int[] W;
public Sol(){
N=ri();
D=ria();
W=ria();
}
static String rs(){return Console.ReadLine();}
static int ri(){return int.Parse(Console.ReadLine());}
static long rl(){return long.Parse(Console.ReadLine());}
static double rd(){return double.Parse(Console.ReadLine());}
static String[] rsa(){return Console.ReadLine().Split(' ');}
static int[] ria(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>int.Parse(e));}
static long[] rla(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>long.Parse(e));}
static double[] rda(){return Array.ConvertAll(Console.ReadLine().Split(' '),e=>double.Parse(e));}
}
kuuso1