Submission #419929

#TimeUsernameProblemLanguageResultExecution timeMemory
419929faresbasbsLast supper (IOI12_supper)C++14
8 / 100
41 ms3812 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; multiset<pair<int,int>> ms; int k,lg,pos[100001]; set<int> st[25001]; void rt(int num){ for(int i = lg-1 ; i >= 0 ; i -= 1){ if(num & (1<<i)){ WriteAdvice(1); }else{ WriteAdvice(0); } } } void ComputeAdvice(int *C , int n , int K , int M){ k = K , lg = ceil(log2(n+1)); for(int i = 0 ; i < n ; i += 1){ st[C[i]].insert(i); st[i].insert(n); } for(int i = 0 ; i < k ; i += 1){ pos[i] = i; ms.insert({*st[i].upper_bound(-1),i}); } for(int i = 0 ; i < n ; i += 1){ if(ms.find({i,C[i]}) != ms.end()){ ms.erase({i,C[i]}); ms.insert({*st[C[i]].upper_bound(i),C[i]}); rt(k); }else{ pair<int,int> bd = *(--ms.end()); ms.erase(bd); rt(pos[bd.second]); pos[C[i]] = pos[bd.second]; ms.insert({*st[C[i]].upper_bound(i),C[i]}); } /*cout << -1 << endl; for(auto j : ms){ cout << j.first << " " << j.second << endl; }cout << endl << endl;*/ } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; int lg2,val[100001]; void Assist(unsigned char *a , int n , int k , int R) { lg2 = ceil(log2(n+1)); for(int i = 0 ; i < k ; i += 1){ val[i] = i; } for(int i = 0 ; i < n ; i += 1){ int num = 0 , num2 = GetRequest(); for(int j = lg2*i ; j < lg2*(i+1) ; j += 1){ num = 2*num; if(a[j] == 1){ num += 1; } } if(num == k){ continue; } PutBack(val[num]); val[num] = num2; } }
#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...