Submission #260847

#TimeUsernameProblemLanguageResultExecution timeMemory
260847arnold518Library (JOI18_library)C++14
100 / 100
512 ms504 KiB
#include "library.h"
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;

const int MAXN = 1000;

int N, bef;
vector<int> todo, T, ans;

int solve(int l, int r)
{
	if(l==r) return todo[l];

	int p, q;
	int mid=l+r>>1;
	for(int i=l; i<=mid; i++) T[todo[i]-1]=1;
	p=Query(T);
	T[bef-1]=1;
	q=Query(T);
	T[bef-1]=0;
	for(int i=l; i<=mid; i++) T[todo[i]-1]=0;

	if(p==q) return solve(l, mid);
	else return solve(mid+1, r);
}

void Solve(int _N)
{
	N=_N;

	for(int i=1; i<=N; i++) todo.push_back(i);
	ans=vector<int>(N);

	T=vector<int>(N, 1);
	int now=0;
	for(int j=0; j+1<todo.size(); j++)
	{
		int p=todo[j];
		T[p-1]=0;
		int q=Query(T);
		if(q==1) { now=p; break; }
		T[p-1]=1;
	}
	if(now==0) now=todo.back();
	for(int j=0; j<todo.size(); j++) if(todo[j]==now)
	{
		todo.erase(todo.begin()+j);
		break;
	}
	ans[0]=now;

	for(int i=2; i<=N; i++)
	{
		T=vector<int>(N);
		bef=ans[i-2];
		int now=solve(0, todo.size()-1);
		for(int j=0; j<todo.size(); j++) if(todo[j]==now)
		{
			todo.erase(todo.begin()+j);
			break;
		}
		ans[i-1]=now;
	}

	Answer(ans);
}

Compilation message (stderr)

library.cpp: In function 'int solve(int, int)':
library.cpp:19:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int mid=l+r>>1;
          ~^~
library.cpp: In function 'void Solve(int)':
library.cpp:40:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j=0; j+1<todo.size(); j++)
               ~~~^~~~~~~~~~~~
library.cpp:49:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j=0; j<todo.size(); j++) if(todo[j]==now)
               ~^~~~~~~~~~~~
library.cpp:61:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   for(int j=0; j<todo.size(); j++) if(todo[j]==now)
                ~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...