Submission #393653

#TimeUsernameProblemLanguageResultExecution timeMemory
393653HazemLast supper (IOI12_supper)C++14
0 / 100
549 ms33520 KiB
#include <bits/stdc++.h> #include "advisor.h" #define S second using namespace std; void appendint(int x,int len){ //printf("%d\n",x); for(int i=0;i<=len;i++) WriteAdvice(char((1<<i)&x)>0); } const int N1 = 2e5+100; int nxt[N1],last[N1]; vector<int>freq[N1]; map<int,int>pos; void ComputeAdvice(int *C, int N, int K, int M) { int len = 0; for(int i=1;;i++){ if((1<<i)>K)break; len = i; } int n = N; for(int i=0;i<n;i++) freq[C[i]].push_back(i); for(int i=0;i<n;i++) freq[i].push_back(n+100); set<pair<int,int>>st; set<int>st1; for(int i=0;i<K;i++) st.insert({freq[i][0],i}),st1.insert(i),pos[i] = i; for(int i=0;i<n;i++){ if(st1.find(C[i])!=st1.end()){ appendint(0,len); st.erase({i,C[i]}); int nxt = upper_bound(freq[C[i]].begin(),freq[C[i]].end(),i)-freq[C[i]].begin(); nxt = freq[C[i]][nxt]; st.insert({nxt,C[i]}); } else { auto it = st.rbegin(); int val = (*it).S; st1.erase(val); st1.insert(C[i]); pos[C[i]] = pos[val]; appendint(pos[val]+1,len); st.erase(*it); int nxt = upper_bound(freq[C[i]].begin(),freq[C[i]].end(),i)-freq[C[i]].begin(); nxt = freq[C[i]][nxt]; st.insert({nxt,C[i]}); } } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; int a[2000000],vals[2000000]; int get(int idx,int len){ int ret = 0; for(int i=idx;i<=idx+len;i++) ret += (1<<(i-idx))*a[i]; return ret; } void Assist(unsigned char *A, int N, int K, int R) { // printf("%d\n",R); // for(int i=0;i<R;i++) // cout<<A[i]; int len = 0; for(int i=0;;i++){ if((1<<i)>K)break; len = i; } for(int i=0;i<K;i++) vals[i] = i; for(int i=0;i<R;i++) a[i] = A[i]; int n = N; for(int i=0;i<n;i++){ int val = GetRequest(); int val1 = get(i*(len+1),len); if(!val1)continue; PutBack(vals[val1-1]); vals[val1-1] = val; } }
#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...