Submission #241485

#TimeUsernameProblemLanguageResultExecution timeMemory
241485kshitij_sodaniLast supper (IOI12_supper)C++17
0 / 100
376 ms65776 KiB
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second #include "advisor.h" vector<int> ind[1000001]; int cur[1000001]; /*void WriteAdvice(int x){ cout<<x<<endl; }*/ void ComputeAdvice(int c[], int n, int k, int m) { set<pair<int,int>> kk; for(int i=0;i<n;i++){ ind[c[i]].pb(i); } for(int i=0;i<n;i++){ ind[i].pb(n+1); cur[i]=-1; } for(int i=0;i<k;i++){ cur[i]=i; kk.insert({ind[i][0],i}); } for(int i=0;i<n;i++){ if(cur[c[i]]>-1){ kk.erase({i,c[i]}); int j=upper_bound(ind[c[i]].begin(),ind[c[i]].end(),i)-ind[c[i]].begin(); kk.insert({ind[c[i]][j],c[i]}); continue; } auto j=kk.end(); j--; cur[c[i]]=cur[(*j).b]; cur[(*j).b]=-1; kk.erase(j); int jj=upper_bound(ind[c[i]].begin(),ind[c[i]].end(),i)-ind[c[i]].begin(); kk.insert({ind[c[i]][jj],c[i]}); for(int j=0;j<15;j++){ if(((1<<j)&(cur[c[i]]))){ WriteAdvice(1); } else{ WriteAdvice(0); } } // cout<<cur[c[i]]<<endl; } // WriteAdvice(0); } /*int main(){ int cc[4]; cc[0]=2; cc[1]=0; cc[2]=3; cc[3]=0; ComputeAdvice(cc,4,2,1000); return 0; } */
#include <bits/stdc++.h> using namespace std; typedef int64_t llo; #define mp make_pair #define pb push_back #define a first #define b second #include "assistant.h" int arr[100001]; set<int> cur; int ind=0; unsigned char aa[2000001]; int rr; int read(){ int ans=0; /* if(ind>=rr){ while(true){ continue; } }*/ for(int i=0;i<15;i++){ if(aa[ind+i]=='1'){ ans+=(1<<i); } } ind+=15; return ans; } /*int GetRequest(){ int yy; cin>>yy; return yy; } void PutBack(int x){ cout<<x<<endl; }*/ void Assist(unsigned char A[], int n, int k, int ro) { rr=ro; for(int i=0;i<ro;i++){ aa[i]=A[i]; } cur.clear(); for(int i=0;i<k;i++){ arr[i]=i; cur.insert(i); } int st=0; for (int i = 0; i < n; i++) { int req = GetRequest(); if (cur.find(req)==cur.end()){ st=1; int r=read(); if(r>=k){ while(true){ continue; } } /* if(cur.find(arr[r])==cur.end()){ while(true){ continue; } }*/ PutBack(arr[r]); cur.erase(arr[r]); arr[r]=req; cur.insert(req); } } if(st==1 and ro==0){ while(true){ continue; } } } /*int main(){ int cc[4]; int nn; cin>>nn; unsigned char aa[nn]; for(int i=0;i<nn;i++){ cin>>aa[i]; } Assist(aa,4,2,nn); return 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...