Submission #118046

#TimeUsernameProblemLanguageResultExecution timeMemory
118046baqargamLast supper (IOI12_supper)C++14
100 / 100
118 ms11760 KiB
#include<bits/stdc++.h> #include "advisor.h" //#include "grader.h" using namespace std; void ComputeAdvice(int *C, int n, int k, int m) {//cout<<345; int ls[125005],nx[125005]; set<pair<int,int> >q; int ret[125005],sc[125005]; for(int i=0;i<=125000;i++){ ls[i]=100000000; nx[i]=0; sc[i]=ret[i]=0; } for(int i=n-1;i>=0;i--){ nx[i]=ls[C[i]]; ls[C[i]]=i; // cout<<nx[i]<<" "; } //cout<<endl; for(int i=0;i<k;i++){ q.insert({-ls[i],i}); sc[i]=1; } for(int i=k;i<k+n;i++){//cout<<i<<" "<<i-k<<" "<<C[i-k]<<" "<<sc[C[i-k]]<<endl; if(sc[C[i-k]]==1) { //cout<<q.size()<<" "<<q.begin()->first<<" "<<q.begin()->second<<" * "<<k<<" "<<i<<endl; q.erase(q.lower_bound({-(i-k),-1000000})); q.insert({-nx[i-k],i}); continue; } int j=q.begin()->second; q.erase(q.begin()); q.insert({-nx[i-k],i});//cout<<j<<" "<<i<<" "<<i-k<<" "<<C[i-k]<<" "<<sc[C[i-k]]<<endl; if(j<k) sc[j]=0; else sc[C[j-k]]=0; sc[C[i-k]]=1; ret[j]=1; } for(int i=0;i<k+n;i++){ WriteAdvice(ret[i]); } }
#include<bits/stdc++.h> #include "assistant.h" //#include "grader.h" using namespace std; void Assist(unsigned char *A, int n, int k, int r) { int sc[200005]; queue<int>q; for(int i=0;i<n;i++){ sc[i]=0; } for(int i=0;i<k;i++){ if((int)A[i]==1) {q.push(i);} sc[i]=1; } for(int i=0;i<n;i++){ int a=GetRequest(); if(sc[a]==0) { if(q.size()==0)PutBack(0); else { PutBack(q.front()); sc[q.front()]=0; q.pop(); sc[a]=1; } } if((int)A[i+k]==1) {q.push(a);} } }
#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...