# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
945349 | Darren0724 | Stray Cat (JOI20_stray) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "Catherine.h"
#include <bits/stdc++.h>
using namespace std;
int last=-1,sure=0;
vector<int> tmp={0,0,1,0,1,1};
vector<int> rec;
void Init(int A, int B) {
}
int Move(vector<int> y) {
if(sure){
int tot=y[0]+y[1];
if(min(y[0],y[1])==0){
return last=(y[0]?0:1);
}
else{
assert(y[last^1]!=0);
return last=last^1;
}
}
if(last==-1){
int tot=y[0]+y[1];
if(tot==1){
sure=1;
last=(y[0]?0:1);
return last;
}
else if(tot==2){
if(y[0]&&y[1]){
rec.push_back(0);
rec.push_back(1);
return last=1;
}
else if(y[0]==2){
rec.push_back(0);
rec.push_back(0);
return last=0;
}
else{
rec.push_back(1);
rec.push_back(1);
return last=1;
}
}
else{
sure=1;
last=(y[0]>y[1]?1:0);
return last;
}
}
else{
int tot=y[0]+y[1];
if(tot==0){
sure=1;
return -1;
}
else if(tot==1){
rec.push_back((y[0]?0:1));
if(rec.size()==5){
int flag=0;
for(int i=0;i<6;i++){
vector<int> a(tmp.begin(),tmp.begin()+5);
if(a==rec){
flag=1;
break;
}
rotate(tmp.begin(),tmp.begin()+1,tmp.end());
}
if(flag==0){
sure=1;
return last=(y[0]?0:1);
}
else{
sure=1;
return -1;
}
}
else{
last=(y[0]?0:1);
return last;
}
}
else{
y[last]++;
if(y[0]==1){
last=0;
sure=1;
return (last==0?-1:0);
}
else{
last=1;
sure=1;
return (last==1?-1:1);
}
}
}
assert(false);
}