Submission #987526

#TimeUsernameProblemLanguageResultExecution timeMemory
987526huutuanLast supper (IOI12_supper)C++14
100 / 100
211 ms146064 KiB
#include "advisor.h" #include <bits/stdc++.h> using namespace std; static const int N=2e5+10; static queue<int> v[N]; static bool on[N]; static int del[N], nxt[N]; static int add[N]; void ComputeAdvice(int *c, int n, int k, int m){ int lg=32-__builtin_clz(k); for (int i=0; i<n; ++i) v[c[i]].push(i+1); for (int i=0; i<n; ++i) v[i].push(n+1); set<pair<int, int>, greater<pair<int, int>>> pq; for (int i=0; i<=n+k; ++i) nxt[i]=del[i]=n+1; for (int i=0; i<k; ++i) pq.emplace(v[i].front(), i), on[i]=1, add[i]=0, nxt[i]=v[i].front(); for (int t=1; t<=n; ++t){ int x=c[t-1]; pq.erase({v[x].front(), x}); v[x].pop(); add[x]=t; nxt[t+k]=v[x].front(); if (!on[x]){ int y=pq.begin()->second; pq.erase(pq.begin()); if (!add[y]){ del[y]=t; }else{ del[add[y]+k]=t; } on[y]=0; on[x]=1; } pq.emplace(v[x].front(), x); } for (int i=0; i<k; ++i) WriteAdvice(nxt[i]<del[i]); for (int i=k+1; i<=n+k; ++i) WriteAdvice(nxt[i]<del[i]); }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; void Assist(unsigned char *a, int n, int k, int r){ int lg=32-__builtin_clz(k); vector<int> v(k); iota(v.begin(), v.end(), 0); int cur=0; set<int> st(v.begin(), v.end()); vector<int> q; for (int i=0; i<k; ++i){ int y=a[cur++]; if (!y) q.push_back(i); } for (int i=0; i<n; ++i){ int x=GetRequest(); int y=a[cur++]; if (!st.count(x)){ PutBack(q.back()); st.erase(q.back()); st.insert(x); q.pop_back(); } if (!y) q.push_back(x); } }

Compilation message (stderr)

advisor.cpp: In function 'void ComputeAdvice(int*, int, int, int)':
advisor.cpp:14:8: warning: unused variable 'lg' [-Wunused-variable]
   14 |    int lg=32-__builtin_clz(k);
      |        ^~

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:7:8: warning: unused variable 'lg' [-Wunused-variable]
    7 |    int lg=32-__builtin_clz(k);
      |        ^~
#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...