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...