이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 ans[ans.size()-1].pb(nw+(int)(convert_base_3(j+1)[i]-'0'));
}
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 ans[ans.size()-1].pb(nw+(int)(convert_base_3(j+1)[i]-'0'));
}
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 ans[ans.size()-1].pb(nw+(int)(convert_base_3(j+1)[i]-'0'));
}
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... |