이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<vector<int> > devise_strategy(int N){
int x = 14;
//cout<<"Straszny amongier\n";
vector<vector<int> > tab(2*x+1);
tab[0].resize(N+1);
tab[0][0] = 0;
for (int j = 1; j <= N; j++){
if (j&(1<<x)) tab[0][j] = 2*x;
tab[0][j] = x;
//cout<<0<<" "<<j<<" # "<<tab[0][j]<<"\n";
}
for (int i = 1; i <= 2*x; i++){
tab[i].resize(N+1);
int ktorybit = (i-1)%x;
bool kolorbitu = (i-1)/x;
if (!(ktorybit%2)) tab[i][0] = 1;
else tab[i][0] = 0;
//cout<<i<<" "<<0<<" # "<<tab[i][0]<<"\n";
//cout<<"### "<<ktorybit<<" "<<kolorbitu<<"\n";
for (int j = 1; j <= N; j++){
if (kolorbitu != bool(j&(1<<ktorybit))){
if (kolorbitu){
if (tab[i][0] == 0) tab[i][j] = -1;
else tab[i][j] = -2;
}else{
if (tab[i][0] == 0) tab[i][j] = -2;
else tab[i][j] = -1;
}
}else{
if (ktorybit == 0) tab[i][j] = -1;
else tab[i][j] = 1+ktorybit-1+x*bool(j&(1<<(ktorybit-1)));
}
// cout<<i<<" "<<j<<" # "<<tab[i][j]<<"\n";
}
//exit(0);
}
return tab;
}
/*int main(){
int N,A,B;
cin>>N>>A>>B;
vector<vector<int> > strategia = devise_strategy(N);
int tablica = 0;
while (1){
int ruch = strategia[tablica][0];
int val = 0;
if (ruch == 0) val = A;
else val = B;
int ruch2 = strategia[tablica][val];
cout<<"Tab: "<<tablica<<" ktory: "<<ruch<<" val: "<<val<<" # "<<strategia[tablica][val]<<"\n";
tablica = strategia[tablica][val];
if (ruch2 < 0) exit(0);
}
}*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |