답안 #225314

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
225314 2020-04-20T09:11:01 Z kshitij_sodani 도서관 (JOI18_library) C++17
0 / 100
2000 ms 408 KB
#include <iostream>
#include <bits/stdc++.h>
#include "library.h"
using namespace std;

#define pb push_back
typedef long long llo;
#define a first
#define b second
int n;
vector<int> aa;
vector<int> bb;
/*
void Answer(vector<int> cc){
	for(auto j:cc)
	{	cout<<j<<" ";
	}
	cout<<endl;
}
int Query(vector<int> cc){
	for(auto j:cc){
		cout<<j<<" ";
	}
	cout<<endl;
	int xx;
	cin>>xx;
	return xx;
}*/
int ll;
void solve(int ind,int l,int r){
	//cout<<l<<" "<<r<<endl;
	if(l==r){
		if(aa[l]==0){
			ll=-1;

			return ;
		}

	/*	if(ind==l){
			ll=-1;
			while(true){
				continue;
			}
		}
		else{*/
			for(int i=0;i<n;i++){
				if((ind==i or i==l)){

					bb[i]=1;
				}
				else{
					bb[i]=0;
				}
			}
			int yy=Query(bb);
			if(yy==1){
				aa[l]=0;
				ll=l;
			}
			else{
				ll=-1;

			}
		//}
	}
	else{
		int mid=(l+r)/2;
		int co=0;
		for(int i=0;i<n;i++){
			bb[i]=0;
		}
		for(int i=l;i<=mid;i++){
			if(aa[i]==2){
				bb[i]=1;
				co+=1;
			}
		}
		if(co==0){

			solve(ind,mid+1,r);

		}
		else{
			bb[ind]=1;
			int yy=Query(bb);
			bb[ind]=0;
			int zz=Query(bb);
			if(yy==zz){
				solve(ind,l,mid);
			}
			else{
				solve(ind,mid+1,r);
			}
		}

	}
}
void Solve(int nn){
	n=nn;
	for(int i=0;i<n;i++){
		aa.pb(2);
		bb.pb(0);
	}
	int x=0;
	deque<int> ans;
	ans.push_back(0);
	int st=0;
	int kk=0;
	int le=n-1;
	aa[0]=0;
	int cco=0;

	while(le){
		cco+=1;
		int y=x;
		ll=-2;

		solve(x,0,n-1);

		if(ll!=-1){
			le-=1;
		}
		x=ll;

		if(x==-1){
			x=0;
			st=1;
			kk+=1;
		}
		else{
			if(st==0){
				ans.push_back(x);
			}
			else{
				ans.push_front(x);
			}
		}
		aa[x]=0;
		aa[y]=0;
	}
	vector<int> fin;
	for(int i=0;i<n;i++){
		int x=ans.front();
		ans.pop_front();
		fin.pb(x+1);
	}
	Answer(fin);
}
/*int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	Solve(5);


	return 0;
}*/
# 결과 실행 시간 메모리 Grader output
1 Correct 56 ms 384 KB # of queries: 2939
2 Correct 62 ms 384 KB # of queries: 2901
3 Correct 77 ms 384 KB # of queries: 3084
4 Correct 60 ms 384 KB # of queries: 3038
5 Correct 66 ms 256 KB # of queries: 3062
6 Correct 66 ms 256 KB # of queries: 3074
7 Correct 64 ms 256 KB # of queries: 3025
8 Correct 63 ms 256 KB # of queries: 2936
9 Correct 62 ms 256 KB # of queries: 3079
10 Execution timed out 3013 ms 256 KB Time limit exceeded
11 Correct 5 ms 256 KB # of queries: 0
12 Correct 5 ms 256 KB # of queries: 1
13 Correct 4 ms 256 KB # of queries: 5
14 Correct 5 ms 384 KB # of queries: 9
15 Correct 7 ms 384 KB # of queries: 104
16 Correct 10 ms 384 KB # of queries: 252
# 결과 실행 시간 메모리 Grader output
1 Correct 56 ms 384 KB # of queries: 2939
2 Correct 62 ms 384 KB # of queries: 2901
3 Correct 77 ms 384 KB # of queries: 3084
4 Correct 60 ms 384 KB # of queries: 3038
5 Correct 66 ms 256 KB # of queries: 3062
6 Correct 66 ms 256 KB # of queries: 3074
7 Correct 64 ms 256 KB # of queries: 3025
8 Correct 63 ms 256 KB # of queries: 2936
9 Correct 62 ms 256 KB # of queries: 3079
10 Execution timed out 3013 ms 256 KB Time limit exceeded
11 Correct 5 ms 256 KB # of queries: 0
12 Correct 5 ms 256 KB # of queries: 1
13 Correct 4 ms 256 KB # of queries: 5
14 Correct 5 ms 384 KB # of queries: 9
15 Correct 7 ms 384 KB # of queries: 104
16 Correct 10 ms 384 KB # of queries: 252
17 Execution timed out 3003 ms 384 KB Time limit exceeded
18 Correct 471 ms 376 KB # of queries: 19485
19 Correct 739 ms 388 KB # of queries: 19763
20 Correct 611 ms 384 KB # of queries: 18573
21 Execution timed out 3085 ms 384 KB Time limit exceeded
22 Execution timed out 3034 ms 384 KB Time limit exceeded
23 Correct 612 ms 376 KB # of queries: 19748
24 Execution timed out 3077 ms 384 KB Time limit exceeded
25 Execution timed out 3082 ms 384 KB Time limit exceeded
26 Execution timed out 3010 ms 256 KB Time limit exceeded
27 Correct 170 ms 384 KB # of queries: 9064
28 Correct 271 ms 384 KB # of queries: 11067
29 Correct 279 ms 408 KB # of queries: 11060
30 Correct 336 ms 380 KB # of queries: 11067