제출 #219643

#제출 시각아이디문제언어결과실행 시간메모리
219643MarcoMeijer최후의 만찬 (IOI12_supper)C++14
0 / 100
306 ms151024 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; //macros typedef long long ll; typedef pair<int, int> ii; typedef tuple<int, int, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<iii> viii; typedef vector<ll> vll; #define REP(a,b,c) for(int a=int(b); a<int(c); a++) #define RE(a,c) REP(a,0,c) #define RE1(a,c) REP(a,1,c+1) #define REI(a,b,c) REP(a,b,c+1) #define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--) #define INF 1e9 #define pb push_back #define fi first #define se second #define sz size() const int MX = 1e5; queue<int> nxt[MX]; set<int> onShelf; priority_queue<ii> pq; map<int, int> last; vi ans; void ComputeAdvice(int *C, int N, int K, int M) { RE(i,N) while(!nxt[i].empty()) nxt[i].pop(); onShelf.clear(); while(!pq.empty()) pq.pop(); ans.clear(); RE(i,N) nxt[C[i]].push(i); RE(i,N) nxt[i].push(N); ans.assign(K+N,0); RE(i,K) { onShelf.insert(i); pq.push({nxt[i].front(), i}); last[i] = i; } RE(i,N) { nxt[C[i]].pop(); last[C[i]] = K+i; if(onShelf.count(C[i])) continue; ii p = pq.top(); pq.pop(); ans[last[p.second]] = 1; onShelf.erase(p.se); pq.push({nxt[C[i]].front(), C[i]}); onShelf.insert(C[i]); } for(int i:ans) WriteAdvice(i); }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; //macros typedef long long ll; typedef pair<int, int> ii; typedef tuple<int, int, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<iii> viii; typedef vector<ll> vll; #define REP(a,b,c) for(int a=int(b); a<int(c); a++) #define RE(a,c) REP(a,0,c) #define RE1(a,c) REP(a,1,c+1) #define REI(a,b,c) REP(a,b,c+1) #define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--) #define INF 1e9 #define pb push_back #define fi first #define se second #define sz size() set<int> OnShelf; queue<int> rem; void Assist(unsigned char *A, int N, int K, int R) { OnShelf.clear(); while(!rem.empty()) rem.pop(); RE(i,K) { OnShelf.insert(i); if(A[i]) rem.push(i); } RE(i,N) { int req = GetRequest(); if(!OnShelf.count(req)) { PutBack(rem.front()); OnShelf.erase(rem.front()); rem.pop(); OnShelf.insert(req); } if(A[K+i]) rem.push(req); } }
#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...