Submission #1212591

#TimeUsernameProblemLanguageResultExecution timeMemory
1212591vivkostovPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms328 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; vector<vector<int>>otg; vector<int>v; int n,dp[5005],mas[10],group[30]; void make_dp() { for(int i=3;i<=n;i++) { dp[i]=100000; for(int j=(i+1)/2;j<i;j++) { dp[i]=min(dp[i],dp[j]+2); } for(int j=(i+2)/3;j<i;j++) { dp[i]=min(dp[i],dp[j]+3); } } } void prec() { mas[0]=5001; mas[1]=1944; mas[2]=648; mas[3]=216; mas[4]=72; mas[5]=24; mas[6]=8; mas[7]=8; mas[8]=4; mas[9]=2; for(int i=0;i<=22;i++)otg.push_back(v); otg[0].push_back(0); group[0]=1; for(int i=1;i<=18;i++) { otg[i].push_back(((i+2)/3)%2); group[i]=(i+5)/3; } otg[19].push_back(1); otg[20].push_back(1); otg[21].push_back(0); otg[22].push_back(0); group[19]=8; group[20]=8; group[21]=9; group[22]=9; } void fil(int ind) { int gr=group[ind],gran=mas[gr],st,prev=mas[gr-1],cur,bag=otg[ind][0]+1; for(int i=1;i<=n;i++) { if(ind) { if(ind<=18)st=(ind-1)%3; else st=(ind-1)%2; cur=(i%mas[gr-2])/prev; if(st>cur) { otg[ind].push_back(-bag); continue; } if(st<cur) { otg[ind].push_back(-(bag%2+1)); continue; } if(ind==21||ind==22) { cur=i%prev+1; cur=cur/2; if(!cur)otg[ind].push_back(-bag); else otg[ind].push_back(-(bag%2+1)); continue; } } cur=i%prev; cur=cur/gran; if(ind<=18)otg[ind].push_back(((ind+2)/3)*3+cur+1); else otg[ind].push_back(((ind+1)/2)*2+cur+1); } } vector<vector<int>> devise_strategy(int N) { n=N; prec(); for(int i=0;i<=22;i++) { fil(i); } for(int i=0;i<=22;i++) { //cout<<i<<" | "; for(int j=0;j<=n;j++) { //cout<<otg[i][j]<<" "; } //cout<<endl; } //cout<<endl; //return otg; return otg; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...