Submission #1269424

#TimeUsernameProblemLanguageResultExecution timeMemory
1269424nerrrminLast supper (IOI12_supper)C++20
0 / 100
150 ms11592 KiB
#include "advisor.h" #include<bits/stdc++.h> #define pb push_back using namespace std; const int maxn = 1e5 + 10, maxk = 25005; int n, k, m; vector < int > uses[maxn]; int nxt[maxn]; int on_pos[maxn]; void ComputeAdvice(int *C, int N, int K, int M) { n = N; k = K; m = M; int lg = 0, stepen = 1; while(stepen*2 < k) { stepen *= 2; lg ++; } for (int i = 0; i < n; ++ i) { uses[i].pb(1e9); nxt[i] = 1e9; } for (int i = n-1; i >= 0; -- i) { uses[C[i]].pb(i); nxt[C[i]] = i; } set < pair < int, int > > s; for (int i = 0; i < n; ++ i) on_pos[i] = -1; for (int i = 0; i < k; ++ i) { s.insert(make_pair(nxt[i], i)); on_pos[i] = i; } for (int i = 0; i < n; ++ i) { //cout << "i = " << i << endl; if(on_pos[C[i]] != -1) { uses[C[i]].pop_back(); continue; } pair < int, int > worst = *s.rbegin(); //cout << "here " << endl; int t = worst.second; // cout << t << endl; int pos = on_pos[t]; on_pos[t] = -1; on_pos[C[i]] = pos; // cout << pos << endl; for (int bit = 0; bit <= lg; ++ bit) { if((1<< bit) & pos)WriteAdvice(1); else WriteAdvice(0); } uses[C[i]].pop_back(); nxt[C[i]] = uses[C[i]].back(); s.erase(s.find(worst)); s.insert(make_pair(nxt[C[i]], C[i])); } return; }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; int taken[200000], active[200000]; void Assist(unsigned char *A, int N, int K, int R) { int n, k; n = N; k = K; int lg = 0, stepen = 1; while(stepen*2 < k) { stepen *= 2; lg ++; } for (int i = 0; i < k; ++ i) { taken[i] = i; active[i] = 1; } int i; int j = 0; for (i = 0; i < n; i++) { int req = GetRequest(); if (active[req])continue; int up = 0; for (int bit = 0; bit <= lg; ++ bit) { if(A[j]) { up += (1 << bit); } j ++; } active[taken[up]] = 0; PutBack(taken[up]); taken[up] = req; active[req] = 1; } return; }
#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...