Submission #26684

#TimeUsernameProblemLanguageResultExecution timeMemory
26684samir_droubiLast supper (IOI12_supper)C++14
0 / 100
164 ms19736 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]; int ord[mxn]; for(int i=0;i<K;++i)ord[i]=-1; set<pair<int,int> >s; vector<int>v[mxn]; 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); for(int i=0;i<N;++i) reverse(v[i].begin(),v[i].end()); for(int i=0;i<K;++i) { s.insert({v[i].back(),i}); v[i].pop_back(); } for(int i=0;i<N;++i) { if(s.count({i,C[i]})) { if(ord[C[i]]!=-1)ans[ord[C[i]]+N]=true; else ans[C[i]]=true; } else { set<pair<int,int> >::iterator it=s.end(); --it; s.erase(it); } ord[C[i]]=i; s.insert({v[C[i]].back(),C[i]}); v[C[i]].pop_back(); } 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(sc[r])continue; if(A[r+N]==0)del.push_back(r); 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...