Submission #586768

#TimeUsernameProblemLanguageResultExecution timeMemory
586768keta_tsimakuridzeLast supper (IOI12_supper)C++14
0 / 100
208 ms24536 KiB
#include "advisor.h" #include<bits/stdc++.h> #define pii pair<int,int> #define f first #define s second using namespace std; const int Nn = 1e5 + 5; set<int> s[Nn]; void ComputeAdvice(int *c, int N, int K, int M) { for(int i = 0; i < N; i++) s[c[i]].insert(i + K), s[i].insert(N + K + 1); for(int i = 0; i < K; i++) s[i].insert(i); set<int> on; vector<int> f(N + K); set<pair<int,int> > cur; for(int i = 0; i < K; i++) { cur.insert({*s[i].upper_bound(i), i}); on.insert(i); } int ans = 0; for(int i = K; i < N + K; i++) { int x = c[i - K]; if(on.count(x)) { cur.erase({i, *--s[x].upper_bound(i - 1)}); cur.insert({*s[x].upper_bound(i), i}); continue; } ++ans; pii p = *--cur.end(); cur.erase(p); f[p.s] = 1; if(p.s < K) { on.erase(p.s); } else on.erase(c[p.s - K]); cur.insert({*s[x].upper_bound(i), i}); } // cout << "advisoris " << ans << endl; for(int i = 0; i < N + K; i++) WriteAdvice(f[i]); }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; void Assist(unsigned char *A, int N, int K, int R) { set<int> s, on; for(int i = 0; i < K; i++) { if(A[i] == 1) s.insert(i); on.insert(i); } int ans = 0; for(int i = K; i < N + K; i++) { int x = GetRequest(); if(on.count(x)) { if(A[i]) s.insert(x); continue; } ++ans; if(s.size()) { int a = *s.begin(); PutBack(a); on.erase(a); s.erase(a); } else { int a = *on.begin(); PutBack(a); on.erase(a); } if(A[i]) s.insert(x); on.insert(x); } //cout << "assistantis " << ans << endl; }
#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...