Submission #1016323

#TimeUsernameProblemLanguageResultExecution timeMemory
1016323amirhoseinfar1385Last supper (IOI12_supper)C++17
100 / 100
140 ms12212 KiB
#include "advisor.h" #include<bits/stdc++.h> using namespace std; const int maxn=100000; set<pair<int,int>>st; set<int>wtf; int n,k,m,lgk; int allk[maxn],nxt[maxn],last[maxn],go[maxn],wh[maxn],ret[maxn*2],tof[maxn*2]; void wri(int x){ for(int i=0;i<=lgk;i++){ WriteAdvice((x>>i)&1); } } void ComputeAdvice(int *C, int N, int K, int M) { for(int i=0;i<20;i++){ if((K>>i)&1){ lgk=i; } } n=N; k=K; m=M; for(int i=0;i<maxn;i++){ last[i]=n+1; } for(int i=n-1;i>=0;i--){ nxt[i]=last[C[i]]; last[C[i]]=i; } for(int i=0;i<k;i++){ allk[i]=i; wtf.insert(i); go[i]=last[allk[i]]; wh[i]=i; tof[i]=i; st.insert(make_pair(last[allk[i]],i)); } for(int i=0;i<N;i++){ if(wtf.count(C[i])==1){ tof[wh[C[i]]]=i+k; st.erase(make_pair(go[wh[C[i]]],wh[C[i]])); go[wh[C[i]]]=nxt[i]; st.insert(make_pair(nxt[i],wh[C[i]])); continue; } int z=(*st.rbegin()).second; //wri(z); st.erase((*st.rbegin())); wtf.erase(allk[z]); ret[tof[z]]=1; tof[z]=i+k; wh[C[i]]=z; go[z]=nxt[i]; allk[z]=C[i]; wtf.insert(C[i]); st.insert(make_pair(nxt[i],z)); } for(int i=0;i<n*2;i++){ WriteAdvice(ret[i]); } }
#include "assistant.h" #include<bits/stdc++.h> using namespace std; const int maxn=100000+10; int all[maxn],lgk2,n2,k2,r2; set<int>st2; void Assist(unsigned char *A, int N, int K, int R) { //cout<<"ajab: "<<R<<endl; //for(int i=0;i<R;i++){ //cout<<(int)A[i]<<" "; //} //cout<<"\n"; for(int i=0;i<20;i++){ if((K>>i)&1){ lgk2=i; } } n2=N; k2=K; r2=R; vector<int>khor; for(int i=0;i<k2;i++){ all[i]=i; st2.insert(i); if(A[i]==1){ khor.push_back(i); } } int now=k2; int unnow=0; for(int i=0;i<n2;i++){ int req=GetRequest(); if(st2.count(req)==1){ if(A[now]==0){ //hehe }else{ khor.push_back(req); } now++; continue; } int x=0; if(unnow>=R){ assert(0); } // for(int i=0;i<=lgk2;i++){ // if(A[unnow]==1){ // x+=(1<<i); // } // unnow++; // } PutBack(khor.back()); st2.erase(khor.back()); //cout<<"gahbl: "<<(int)khor.size()<<endl; //cout<<"wtf: "<<khor.back()<<endl; khor.pop_back(); st2.insert(req); if(A[now]==0){ //hehe }else{ khor.push_back(req); } now++; } }

Compilation message (stderr)

assistant.cpp: In function 'void Assist(unsigned char*, int, int, int)':
assistant.cpp:43:9: warning: unused variable 'x' [-Wunused-variable]
   43 |     int x=0;
      |         ^
#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...