Submission #1312394

#TimeUsernameProblemLanguageResultExecution timeMemory
1312394codergPrisoner Challenge (IOI22_prison)C++20
0 / 100
1 ms344 KiB
#include "bits/stdc++.h" using namespace std; #define mp make_pair #define fi first #define se second #define pii pair<int,int> #define yes cout<<"YES\n" #define no cout<<"NO\n" #define pb push_back void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}} #define F(i,l,r) for(int i=(l);i<(r);++i) #define FR(i,l,r) for(int i=(l);i>=(r);--i) typedef long long ll; const int maxn=1000005; const int mod=1e9+7; const int mox=2000*500+505; const int inf=1e9; vector<vector<int> > s; int dp[22]; void build(int idx,int l,int r,int pl,int pr,int bag){ s[idx][0]=bag; F(v,pl,l)s[idx][v]=(bag==0)?-1:-2;//smaller F(v,r+1,pr+1)s[idx][v]=(bag==0)?-2:-1;//larger s[idx][l]=(bag==0)?-1:-2; s[idx][r]=(bag==0)?-2:-1; int inl=l+1,inr=r-1; if(inl>inr)return; int len=inr-inl+1; bool ternary; int capbin=(idx+2<=20)?dp[idx+2]:0,mxbin=2+2*capbin; int capter=(idx+3<=20)?dp[idx+3]:0,mxter=2+3*capter; if(len<=(inr-inl+1) && mxbin>=len)ternary=0; else ternary=1; if(mxter>mxbin)ternary=(mxbin<len); else ternary=0; if(ternary){ int split=len/3,r1=inl+split-1; int r2=r1+split; if(len%3==2){ r1++; r2++; }else if(len%3==1)r1++; int cid[3]={idx+1,idx+2,idx+3}; int bounds[4]={inl,r1,r2,inr}; F(k,0,3){ int cl=bounds[k]+(k==0?0:1); int cr=bounds[k+1]; F(v,cl,cr+1)s[idx][v]=cid[k]; build(cid[k],cl,cr,inl,inr,1-bag); } }else{ int split=(len>>1),mid=inl+split-1; int cid[2]={idx+1,idx+2}; int bounds[3]={inl,mid,inr}; F(k,0,2){ int cl=bounds[k]+(k==0?0:1); int cr=bounds[k+1]; F(v,cl,cr+1)s[idx][v]=cid[k]; build(cid[k],cl,cr,inl,inr,1-bag); } } } vector<vector<int> > devise_strategy(int N){ s.assign(23,vector<int>(N+1,0)); FR(i,20,0){ int val=0; if(i+2<=21)val=2*dp[i+2]+2; int val2=0; if(i+3<=21)val2=3*dp[i+3]+2; dp[i]=max(val,val2); } build(0,1,N,1,N,0); s.resize(21); return s; }

Compilation message (stderr)

prison.cpp: In function 'void setIO(std::string)':
prison.cpp:10:54: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 | void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}}
      |                                               ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
prison.cpp:10:98: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 | void setIO(string name = ""){if(name.size()){ freopen((name + ".in").c_str(), "r", stdin);freopen((name + ".out").c_str(), "w", stdout);}}
      |                                                                                           ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...