Submission #247554

#TimeUsernameProblemLanguageResultExecution timeMemory
247554PajarajaLast supper (IOI12_supper)C++17
0 / 100
177 ms13168 KiB
#include <bits/stdc++.h> #define MAXN 100007 #include "advisor.h" using namespace std; static set<pair<pair<int,int>, int> > s; static set<int> sk; static int nxt[MAXN],lst[MAXN],cnt[MAXN],br=0,d[MAXN]; void ComputeAdvice(int *C, int N, int K, int M) { fill(lst,lst+N,N); for(int i=N-1;i>=0;i--) {nxt[i]=lst[C[i]]; lst[C[i]]=i;} for(int i=0;i<K;i++) {s.insert({{lst[i],i},br++}); sk.insert(i);} for(int i=0;i<N;i++) { int a=C[i]; if(sk.find(a)!=sk.end()) { cnt[a]++; pair<pair<int,int>,int> p=*s.lower_bound({{i,a},0}); s.erase(p); p.first.first=nxt[i]; s.insert(p); } else { set<pair<pair<int,int>,int> >::iterator it=s.end(); it--; pair<pair<int,int>,int> p=*it; s.erase(p); sk.erase(p.first.second); d[p.second]=cnt[p.first.second]; cnt[p.first.second]=0; p={{nxt[i],a},br++}; s.insert(p); sk.insert(a); } } for(set<pair<pair<int,int>,int> >::iterator it=s.begin();it!=s.end();it++) { pair<pair<int,int>,int> p=*it; d[p.second]=cnt[p.first.second]; } for(int i=0;i<br;i++) { for(int j=0;j<d[i];j++) WriteAdvice(1); WriteAdvice(0); } }
#include <bits/stdc++.h> #define MAXN 100007 #include "assistant.h" using namespace std; static vector<int> d; static queue<int> q; static int cnt[MAXN]; void Assist(unsigned char *A, int N, int K, int R) { int t=0,p=0; for(int i=0;i<N;i++) { if(A[i]==1) t++; else {d.push_back(t); t=0;} } for(int i=0;i<K;i++) {cnt[i]=d[p++]; if(cnt[i]==0) q.push(i);} for(int i=0;i<N;i++) { int r=GetRequest(); if(cnt[r]!=0) {cnt[r]--; if(cnt[r]==0) q.push(r);} else { cnt[r]=d[p++]; PutBack(q.front()); q.pop(); if(cnt[r]==0) q.push(r); } } }
#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...