Submission #1217575

#TimeUsernameProblemLanguageResultExecution timeMemory
1217575user736482Prisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms328 KiB
#pragma GCC optimize("O3") #include <bits/stdc++.h> using namespace std; #define ll long long #define ld long double #define pb push_back #define ff first #define ss second #define MOD 998244353 #define INF 1000000019 #define POT (1<<20) #define INFL 1000000000000000099 vector<ll>v1={3,3,3,3,3,2,2,1,1},v2={0,1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,7,7,8}; vector<ll>roz[5001]; ll pm[10],pm2[10]; vector<vector<int>>ans; vector<vector<int>>devise_strategy(int n){ ios_base::sync_with_stdio(0);cin.tie(0); pm[v1.size()]=0; for(ll i=0;i<=20;i++){ ans.pb({}); for(ll i=0;i<=n;i++)ans.back().pb(0); } pm2[0]=1; for(ll i=1;i<=v1.size();i++)pm2[i]=pm2[i-1]+v1[i-1]; for(ll i=v1.size()-1;i>=0;i--)pm[i]=pm[i+1]*v1[i]+2; for(ll i=1;i<=n;i++){ ll ak=i; for(ll j=0;j<v1.size();j++){ ak--; if(ak==-1){ roz[i].pb(-1-pm2[roz[i].size()]); break; } if(ak==pm[j]-2){ roz[i].pb(-2-pm2[roz[i].size()]);break; } roz[i].pb(ak/(pm[j+1])); ak%=pm[j+1]; } //for(ll j:roz[i])cout<<j<<" "; for(ll j=0;j<21;j++)roz[i].pb(0); //cout<<"\n"<<flush; } for(ll i=0;i<=20;i++){ ans[i][0]=(v2[i])%2; //cout<<i<<": "; for(ll j=1;j<=n;j++){ ll ph=v2[i]; ans[i][j]=pm2[ph]+roz[j][ph]; if(ph && roz[j][ph-1]!=i-pm2[ph-1]){ if(roz[j][ph-1]<i-pm2[ph-1])ans[i][j]=-1; else ans[i][j]=-2; } if(ans[i][j]>=0){ if(ph && roz[j][ph-1]<0)ans[i][j]=roz[j][ph-1]+pm2[ph-1]; } //cout<<ans[i][j]<<" "; } //cout<<"\n"; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...