Submission #1018113

#TimeUsernameProblemLanguageResultExecution timeMemory
1018113NintsiChkhaidzeLast supper (IOI12_supper)C++17
100 / 100
90 ms61280 KiB
#include <bits/stdc++.h> #include "advisor.h" #define pb push_back using namespace std; const int MM = 2e6 + 5; vector <int> st[MM]; bool onn[MM],val[MM],valk[MM]; bool fix[MM]; void ComputeAdvice(int *C, int N, int K, int M) { int n=N,k=K; for (int i=N-1;i>=0;i--){ st[C[i]].pb(i); } set <pair<int,int> > stt; for (int i=0;i<K;i++){ onn[i] = 1; int val = 0; if (!st[i].size()) val=1e9; else val=st[i].back(); stt.insert({val,i}); } int i; vector <int> vec; for (i = 0; i < N; i++) { int req = C[i]; if (onn[req]) { vec.pb(-1); int val = 0; if (!st[req].size()) val=1e9; else val=st[req].back(); stt.erase(stt.find({val,req})); while (st[req].size() && st[req].back() <= i){ st[req].pop_back(); } val = 0; if (!st[req].size()) val=1e9; else val=st[req].back(); stt.insert({val,req}); continue; } int idx=(--stt.end())->second; stt.erase(--stt.end()); vec.pb(idx); onn[idx] = 0; onn[req] = 1; while (st[req].size() && st[req].back() <= i){ st[req].pop_back(); } int val = 0; if (!st[req].size()) val=1e9; else val=st[req].back(); stt.insert({val,req}); } for (int i = n - 1; i >= 0; i--){ val[i] = (!fix[C[i]]); fix[C[i]] = 1; fix[vec[i]] = 0; } for (int i=k-1;i>=0;i--){ if (!fix[i]) valk[i] = 1; } for (int i=0;i<k;i++) WriteAdvice(valk[i]); for (int i=0;i<n;i++) WriteAdvice(val[i]); }
#include <bits/stdc++.h> #include "assistant.h" #define pb push_back using namespace std; int CC[2000005]; bool on[2000005]; int vall[2000005],vallk[2000005]; void Assist(unsigned char *A, int N, int K, int R) { int n=N; int k=K; for (int i = 0; i < k; i++) vallk[i] = A[i]; for (int i=0;i<n;i++) vall[i] = A[i+k]; vector <int> t2; for (int i=0;i<k;i++){ if (!vallk[i]) on[i] = 1; else t2.pb(i); } int i; int l = 0; for (i = 0; i < N; i++) { int req = GetRequest(); if (on[req]){ if (!vall[i]) continue; on[req] = 0; t2.pb(req); continue; } PutBack(t2.back()); t2.pop_back(); if (!vall[i]){ on[req] = 1; }else{ t2.pb(req); } } }

Compilation message (stderr)

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:26:6: warning: unused variable 'l' [-Wunused-variable]
   26 |  int l = 0;
      |      ^
#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...