Submission #393626

#TimeUsernameProblemLanguageResultExecution timeMemory
393626HazemLast supper (IOI12_supper)C++14
0 / 100
78 ms13464 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(((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][1],i}),st1.insert(i),pos[i] = i; for(int i=0;i<n;i++){ if(st1.find(C[i])!=st1.end()) appendint(0,len); 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]-'0'; int n = N; for(int i=0;i<n;i++){ int val = GetRequest(); int val1 = get(i,len); if(!val1)continue; PutBack(vals[val1]); vals[val1] = 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...