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 "prison.h"
#include <bits/stdc++.h>
#include <vector>
using namespace std;
typedef long long ll;
typedef long double ld;
#define F first
#define S second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) (int)x.size()
vector<vector<int>> ans;
string convert_base_3(int n) {
string s;
while (n) {
s += char(n % 3 + '0');
n /= 3;
}
while (s.size() != 8) s += '0';
reverse(s.begin(), s.end());
return s;
}
std::vector<std::vector<int>> devise_strategy(int N) {
int a=0, b=1, A=-2, B=-1;
ans.pb({a});
int nw = 4;
for(int i=0; i<N; i++){
ans[ans.size()-1].pb(convert_base_3(i+1)[0]-'0'+1);
}
for(int i=1; i<7; i++){
swap(a, b);
swap(A, B);
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[i-1]=='1' || convert_base_3(j+1)[i-1]=='2') ans[ans.size()-1].pb(A);
else if(convert_base_3(j+1)[i]=='0') ans[ans.size()-1].pb(nw);
else if(convert_base_3(j+1)[i]=='1') ans[ans.size()-1].pb(A);
else if(convert_base_3(j+1)[i]=='2') ans[ans.size()-1].pb(A);
}
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[i]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[i]=='2') ans[ans.size()-1].pb(A);
else if(convert_base_3(j+1)[i]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[i]=='1') ans[ans.size()-1].pb(nw+1);
else if(convert_base_3(j+1)[i]=='2') ans[ans.size()-1].pb(A);
}
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[i-1]=='0' || convert_base_3(j+1)[i-1]=='1') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[i]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[i]=='1') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[i]=='2') ans[ans.size()-1].pb(nw+2);
}
nw+=3;
}
swap(a, b);
swap(A, B);
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[6]=='1' || convert_base_3(j+1)[6]=='2') ans[ans.size()-1].pb(A);
else if(convert_base_3(j+1)[7]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='1') ans[ans.size()-1].pb(nw);
else if(convert_base_3(j+1)[7]=='2') ans[ans.size()-1].pb(A);
}
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[6]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[6]=='2') ans[ans.size()-1].pb(A);
else if(convert_base_3(j+1)[7]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='1') ans[ans.size()-1].pb(nw);
else if(convert_base_3(j+1)[7]=='2') ans[ans.size()-1].pb(A);
}
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[6]=='0' || convert_base_3(j+1)[6]=='1') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='1') ans[ans.size()-1].pb(nw);
else if(convert_base_3(j+1)[7]=='2') ans[ans.size()-1].pb(A);
}
swap(a, b);
swap(A, B);
ans.pb({a});
for(int j=0; j<N; j++){
if(convert_base_3(j+1)[7]=='0') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='1') ans[ans.size()-1].pb(B);
else if(convert_base_3(j+1)[7]=='2') ans[ans.size()-1].pb(A);
}
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |