Submission #1083134

#TimeUsernameProblemLanguageResultExecution timeMemory
1083134codefoxLast supper (IOI12_supper)C++14
100 / 100
74 ms8616 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; #define pii pair<int, int> void ComputeAdvice(int *C, int N, int K, int M) { int H = K+N; vector<int> next(H, 0); vector<int> last(N, 1e9); for (int i = N-1; i >= 0; i--) { next[i+K] = last[C[i]]; last[C[i]]=i+K; } for (int i = 0; i < K; i++) { next[i] = last[i]; } set<pii> follow; vector<int> first(N, -1); vector<int> ins(N, 0); vector<int> del(N+K, 0); vector<int> CC(H); for (int i = 0; i < K; i++) CC[i] = i; for (int i = 0; i < N; i++) CC[i+K] = C[i]; for (int i = 0; i < K; i++) { first[i] = i; follow.insert({next[i], i}); ins[i] = 1; } for (int i = K; i < H; i++) { if (ins[CC[i]]) { follow.erase({i, first[CC[i]]}); follow.insert({next[i], i}); } else { pii ab = *(--follow.end()); follow.erase(ab); ins[CC[ab.second]] = 0; del[ab.second] = 1; ins[CC[i]] = 1; follow.insert({next[i], i}); } first[CC[i]] = i; } for (int i = 0; i < H; i++) { WriteAdvice(del[i]); } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; void Assist(unsigned char *A, int N, int K, int R) { queue<int> del; vector<int> ins(N, 0); for (int i = 0; i < K; i++) { ins[i] = 1; if (A[i]) del.push(i); } for (int i = K; i < N+K; i++) { int g = GetRequest(); if (!ins[g]) { ins[del.front()]=0; ins[g] = 1; PutBack(del.front()); del.pop(); } if (A[i]) del.push(g); } }
#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...