Problem C. Hakase and Nano
Hakase and Nano are playing an ancientpebble game (pebble is a kind of rock). There are n packs ofpebbles, and the i-th pack contains ai pebbles. They take turns to pick up pebbles. In each turn, they canchoose a pack arbitrarily and pick up at least one pebble in this pack. Theperson who takes the last pebble wins.
This time, Hakase cheats. In each turn,she must pick pebbles following the rules twice continuously. Suppose bothplayers play optimally, can you tell whether Hakase will win?
Input
The first line contains an integer T (1 ≤ T ≤20) representing the number of test cases.
For each test case, thefirst line of description contains two integers n(1 ≤ n ≤ 106) and d (d = 1 or d = 2). If d = 1, Hakase takes firstand if d = 2, Nano takes first. n represents thenumber of pebble packs.
The second line contains n integers, the i-th integer ai (1 ≤ ai≤ 109) represents the number ofpebbles in the i-th pebble pack.
Output
For each test case, print “Yes” or “No” in one line.If Hakase can win, print “Yes”, otherwise,print “No”.
Example
standard input |
| standard output |
2 3 1 1 1 2 3 2 1 1 2 | Yes No |
|
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t;
cin>>t;
while(t--){
int n,d;
cin>>n>>d;
int cnt=0;
int tmp;
if(d==1){
for(int i=0;i<n;i++){
cin>>tmp;
if(tmp==1) cnt++;
}
if(cnt==n&&n%3==0) puts("No");
else puts("Yes");
}
else{
for(int i=0;i<n;i++){
cin>>tmp;
if(tmp==1) cnt++;
}
if(cnt==n&&n%3==1||cnt+1==n&&n%3==1||cnt+1==n&&n%3==0){
puts("No");
}
else puts("Yes");
}
}
return 0;
}