Submission #1176923

#TimeUsernameProblemLanguageResultExecution timeMemory
1176923simona1230Last supper (IOI12_supper)C++20
33 / 100
238 ms12952 KiB
#include <bits/stdc++.h> #include "advisor.h" using namespace std; int a[100001],b; void bin(int x) { for(int i=0; i<b; i++) { if(x&(1<<i)) { //cout<<1; WriteAdvice(1); } else { //cout<<0; WriteAdvice(0); } } } int id[100000]; vector<int> p[100000]; int in[100000],d[100000]; void ComputeAdvice(int *c, int n, int k, int m) { int y=1; while(y<=k)y*=2,b++; for(int i=0;i<n;i++) p[c[i]].push_back(i); for(int i=0;i<n;i++) p[i].push_back(n); priority_queue<pair<int,int> > q; for(int i=0;i<k;i++) { in[i]=i; d[i]=1; q.push({p[i][0],i}); } for(int i=0;i<n;i++) { int x=q.top().second; if(d[c[i]]==0) { //cout<<x<<" "<<in[x]<<" "<<d[c[i]]<<endl; q.pop(); bin(in[x]); in[c[i]]=in[x]; d[x]=0; d[c[i]]=1; } else bin(k); id[c[i]]++; q.push({p[c[i]][id[c[i]]],c[i]}); } }
#include <bits/stdc++.h> #include "assistant.h" using namespace std; int op[100000]; int c[100001],B; int dec(string s) { int x=0; for(int i=0;i<B;i++) if(s[i]=='1')x+=(1<<i); return x; } void Assist(unsigned char *a, int n, int k, int r) { for(int i=0;i<k;i++) c[i]=i,op[i]=i; int y=1; while(y<=k)y*=2,B++; int z=-1; for(int i=0;i<r;i+=B) { z++; int r=GetRequest(); string s=""; for(int j=0;j<B;j++) if(a[i+j])s+='1'; else s+='0'; int x=dec(s); if(x==k)continue; PutBack(c[x]); c[x]=r; } }
#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...