제출 #629920

#제출 시각아이디문제언어결과실행 시간메모리
629920TimDee죄수들의 도전 (IOI22_prison)C++17
50 / 100
16 ms1364 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; void fill(vector<vector<int>>&a, int n, int sz, int ind) { //cout<<"fill "<<sz<<' '<<ind<<'\n'; int x; cin>>x; if (sz<=3) { int cnt=0; while (sz-2*cnt>=2) { for (int i=1; i<=n; ++i) { if ((i-1)%sz<=cnt) a[ind][i]=-1; else if ((i-1)%sz>=(sz-1-cnt)) a[ind][i]=-2; else a[ind][i]=ind+1; } ++ind; a[ind][0]=1; for (int i=1; i<=n; ++i) { if ((i-1)%sz<=cnt) a[ind][i]=-2; else if ((i-1)%sz>=(sz-1-cnt)) a[ind][i]=-1; else a[ind][i]=ind+1; } cnt++; ++ind; } return; } for (int i=1; i<=n; ++i) { if ((i-1)%sz<sz/3) a[ind][i]=ind+1; else if ((i-1)%sz<2*(sz/3)) a[ind][i]=ind+2; else a[ind][i]=ind+3; } a[ind+1][0]=1; for (int i=1; i<=n; ++i) { if ((i-1)%sz<sz/3) a[ind+1][i]=ind+4; else a[ind+1][i]=-1; } a[ind+2][0]=1; for (int i=1; i<=n; ++i) { if ((i-1)%sz<sz/3) a[ind+2][i]=-2; else if ((i-1)%sz<2*(sz/3)) a[ind+2][i]=ind+4; else a[ind+2][i]=-1; } a[ind+3][0]=1; for (int i=1; i<=n; ++i) { if ((i-1)%sz<2*(sz/3)) a[ind+3][i]=-2; else a[ind+3][i]=ind+4; } sz=(sz+2)/3; fill(a,n,sz,ind+4); } vector<vector<int>> devise_strategy(int n) { int sz=1; int need=0; while (sz<n) {sz*=3; need+=4;} //cout<<need<<'\n'; vector<vector<int>> a(need-1,vector<int>(n+1,0)); fill(a,n,sz,0); for (int i=0; i<27; ++i) { //auto x=a[i]; //cout<<i<<": "; //if (x[0]==0) cout<<"A "; else cout<<"B "; //for (auto y:x) cout<<y<<' '; cout<<'\n'; } return a; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...