Submission #514833

#TimeUsernameProblemLanguageResultExecution timeMemory
514833andrei_boaca최후의 만찬 (IOI12_supper)C++14
0 / 100
283 ms262144 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; typedef pair<int,int> pii; bool useful[200005]; int isthere[200005]; multiset<int> s; deque<int> poz[200005]; int INF=1e9; void ComputeAdvice(int *C, int N, int K, int M) { for(int i=0;i<K;i++) poz[i].push_back(i); for(int j=0;j<N;j++) poz[C[j]].push_back(j+K); for(int i=0;i<=N+K;i++) useful[i]=0; for(int i=0;i<K;i++) { isthere[i]=i+1; poz[i].pop_front(); if(poz[i].empty()) s.insert(INF); else s.insert(poz[i].front()); } for(int i=0;i<N;i++) { int nr=C[i]; if(isthere[nr]) { useful[isthere[nr]-1]=1; int p=poz[nr].front(); s.erase(s.find(p)); } else { auto it=prev(s.end()); s.erase(it); int p=(*it); if(p<N&&p>=0) isthere[C[p]]=0; } isthere[nr]=poz[nr].front()+1; poz[nr].pop_front(); if(poz[nr].empty()) s.insert(INF); else s.insert(poz[nr].front()); } for(int i=0;i<N+K;i++) WriteAdvice(char(useful[i]+'0')); }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; typedef pair<int,int> pii; set<pii> buffer; int there[200005]; void Assist(unsigned char *A, int N, int K, int R) { for(int i=0;i<K;i++) { int x=A[i]-'0'; if(x==0) x=-1; buffer.insert({x,i}); there[i]=x; } for(int i=K;i<N+K;i++) { int nr=GetRequest(); if(there[nr]) buffer.erase({there[nr],nr}); else { auto it=buffer.begin(); int nr=(*it).second; buffer.erase(it); there[nr]=0; PutBack(nr); } int x=A[i]-'0'; if(x==0) x=-1; there[nr]=x; buffer.insert({x,nr}); } }
#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...