Submission #26789

#TimeUsernameProblemLanguageResultExecution timeMemory
26789samir_droubiLast supper (IOI12_supper)C++14
0 / 100
102 ms27552 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { const int mxn=(1e5)+5; bool ans[mxn*2]; bool sc[mxn]; int ord[mxn]; vector<int>v[mxn]; set<pair<int,int> >s; for(int i=0;i<N;++i)v[C[i]].push_back(i); for(int i=0;i<N;++i) { v[i].push_back(N); reverse(v[i].begin(),v[i].end()); } for(int i=0;i<K;++i) { ord[i]=-1; sc[i]=true; s.insert({v[i].back(),i}); v[i].pop_back(); } for(int i=0;i<N;++i) { if(sc[C[i]]) { s.erase({i,C[i]}); if(ord[C[i]]==-1)ans[C[i]]=true; else ans[ord[i+N]]=true; } else { set<pair<int,int> >::iterator it=s.end(); --it; sc[it->second]=false; s.erase(it); sc[C[i]]=true; } ord[C[i]]=i; s.insert({v[C[i]].back(),C[i]}); } for(int i=0;i<2*N;++i) WriteAdvice(ans[i]); }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; void Assist(unsigned char *A, int N, int K, int R) { const int mxn=(1e5)+5; vector<int>del; bool sc[mxn]; for(int i=0;i<K;++i) { if(A[i]==0)del.push_back(i); sc[i]=true; } int it=0; for(int i=0;i<N;++i) { int r=GetRequest(); if(A[i+N]==0)del.push_back(r); if(sc[r])continue; sc[del[it]]=false; PutBack(del[it]); ++it; sc[r]=true; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...