Submission #138724

#TimeUsernameProblemLanguageResultExecution timeMemory
138724mahmoudbadawyLast supper (IOI12_supper)C++17
0 / 100
270 ms27120 KiB
#include "advisor.h" #include <bits/stdc++.h> #define F first #define S second using namespace std; const int NN=1e5+5; vector<int> id[NN]; set< pair<int,pair<int,int> > > ss; int cur[NN],isin[NN]; int sind[NN]; int adv[2*NN]; void ComputeAdvice(int *C, int N, int K, int M) { //WriteAdvice(0); for(int i=0;i<N;i++) id[C[i]].push_back(i); for(int i=0;i<N;i++) id[i].push_back(N+5); for(int i=0;i<K;i++) { ss.insert({-id[C[i]][0],{i,i}}); sind[i]=i; isin[i]=1; } for(int i=0;i<N;i++) { if(isin[C[i]]) { //cout << C[i] << " " << isin[C[i]] << " " << sind[C[i]] << endl; adv[sind[C[i]]]=1; ss.erase({-id[C[i]][cur[C[i]]],{sind[i],C[i]}}); cur[C[i]]++; sind[C[i]]=i+K; ss.insert({-id[C[i]][cur[C[i]]],{sind[i],C[i]}}); } else { //cout << C[i] << endl; auto del=*ss.begin(); isin[del.S.S]=0; //cout << del.S.F << " " << del.S.S << endl; ss.erase(del); cur[C[i]]++; sind[C[i]]=i+K; isin[C[i]]=1; ss.insert({-id[C[i]][cur[C[i]]],{sind[i],C[i]}}); } } for(int i=0;i<N+K;i++) { //cout << adv[i] << " "; WriteAdvice(adv[i]); } }
#include "assistant.h" #include <bits/stdc++.h> using namespace std; const int NN=1e5+5; int in[NN],st[NN]; set< pair<int,int> > s2; void Assist(unsigned char *A, int N, int K, int R) { for(int i=0;i<K;i++) { s2.insert({A[i],i}); in[i]=1; st[i]=A[i]; } for(int i=0;i<N;i++) { int x=GetRequest(); if(in[x]) { s2.erase({st[x],x}); s2.insert({A[i+K],x}); st[x]=A[i+K]; } else { auto cur=(*s2.begin()).second; PutBack(cur); in[cur]=0; s2.erase(s2.begin()); s2.insert({A[i+K],x}); in[x]=1; st[x]=A[i+K]; } } }
#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...