제출 #825178

#제출 시각아이디문제언어결과실행 시간메모리
825178alvingogo죄수들의 도전 (IOI22_prison)C++17
0 / 100
0 ms212 KiB
#include "prison.h" #include <bits/stdc++.h> #define fs first #define sc second #define p_q priority_queue using namespace std; int n; vector<vector<int> > ans; vector<vector<int>> devise_strategy(int N) { n=N; vector<int> s(n+1); s[0]=0; int m=2048; for(int i=1;i<=n;i++){ s[i]=i/m+1; } ans.push_back(s); int fl=1; int q=4; for(;m>1;m>>=1){ if(q==4){ vector<int> x[3]={vector<int>(n+1),vector<int>(n+1),vector<int>(n+1)}; x[0][0]=x[1][0]=x[2][0]=fl; for(int i=1;i<=n;i++){ for(int j=0;j<3;j++){ if(i/m!=(j+1)){ if(i/m>j+1){ x[j][i]=fl-2; } else{ x[j][i]=-1-fl; } } else{ if(m==2){ x[j][i]=(i%m==0)?(-1-fl):(fl-2); } else{ x[j][i]=q+((i%m)>=(m/2)); } } } } ans.push_back(x[0]); ans.push_back(x[1]); ans.push_back(x[2]); fl^=1; q+=2; } else{ vector<int> x[2]={vector<int>(n+1),vector<int>(n+1)}; x[0][0]=x[1][0]=fl; for(int i=1;i<=n;i++){ if(i%(2*m)>=m){ x[0][i]=fl-2; if(m==2){ x[1][i]=(i%m==0)?(-1-fl):(fl-2); } else{ x[1][i]=q+((i%m)>=(m/2)); } } else{ if(m==2){ x[0][i]=(i%m==0)?(-1-fl):(fl-2); } else{ x[0][i]=q+((i%m)>=(m/2)); } x[1][i]=-1-fl; } } ans.push_back(x[0]); ans.push_back(x[1]); fl^=1; q+=2; } } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...