Submission #556155

#TimeUsernameProblemLanguageResultExecution timeMemory
556155keta_tsimakuridzeLast supper (IOI12_supper)C++14
0 / 100
182 ms15344 KiB
#include "advisor.h" #include<bits/stdc++.h> using namespace std; const int nn = 2e5 + 5; vector<int> x[nn]; int cur[nn], save[nn], last[nn]; void ComputeAdvice(int *C, int N, int K, int M) { for(int i = N - 1; i >= 0; i--) { x[C[i]].push_back(i + K); } set<pair<int,int> > s; for(int i = 0; i < K; i++) { cur[i] = 1; s.insert({x[i].size() ? x[i].back() : N + K, i}); if(x[i].size()) x[i].pop_back(); last[i] = i; } for(int i = K; i < N + K; i++) { int c = C[i - K]; if(cur[c]) { save[last[c]] = 1; s.erase({i, c}); } else { pair<int,int> p = *--s.end(); s.erase(p); cur[p.second] = 0; } cur[c] = 1; s.insert({(x[c].size() ? x[c].back() : N + K), c}); if(x[c].size()) x[c].pop_back(); last[c] = i; } for(int i = 0; i < N + K; i++) WriteAdvice(save[i]); }
#include<bits/stdc++.h> using namespace std; #include "assistant.h" const int nn = 2e5 + 5; int last[nn], cur[nn]; void Assist(unsigned char *A, int N, int K, int R) { set<pair<int,int> > s; for(int i = 0; i < K; i++) { last[i] = i; s.insert({A[i], i}); cur[i] = 1; } for(int i = K; i < N + K; i++) { int c = GetRequest(); if(cur[c]) { s.erase({A[last[c]], c}); last[c] = i; s.insert({A[i], c}); continue; } cur[c] = 1; pair<int,int> p = *s.begin(); PutBack(p.second); s.erase(p); cur[p.second] = 0; s.insert({A[i], c}); last[c] = i; } }
#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...