Submission #23779

#TimeUsernameProblemLanguageResultExecution timeMemory
23779HiasatLast supper (IOI12_supper)C++14
0 / 100
59 ms7648 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; void ComputeAdvice(int *C, int N, int K, int M) { for (int i = 0; i < N; ++i){ for(int k = 19; k >= 0 ; k--){ bool r = C[i]&(1<<k); WriteAdvice(r); } } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; typedef pair<int,int> pii; vector<int> nxt[100001]; int n , k , r; bool have[100001]; int go(int color,int cur){ vector<int>::iterator it = upper_bound(nxt[color].begin(),nxt[color].end(),cur); if(it == nxt[color].end()) return n; return *it; } void Assist(unsigned char *A, int N, int K, int R) { n = N; k = K; r = R; for (int i = 0; i < N; ++i) { int num = 0; for (int k = 19 ; k >= 0 ; k--) { num += A[i * 20 + (19 - k)] * (1 << k); } nxt[num].push_back(i); } priority_queue< pii > q; for (int i = 0; i < K; ++i){ have[i] = 1; q.push(make_pair(go(i,-1),i)); } for (int i = 0; i < N; i++) { int req = GetRequest(); if(have[req]) continue; pii src = q.top(); q.pop(); PutBack(src.second); have[src.second] = 0; have[req] = 1; q.push(make_pair(go(req,i),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...