답안 #225284

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
225284 2020-04-20T07:31:46 Z kshitij_sodani 도서관 (JOI18_library) C++17
0 / 100
2000 ms 504 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(l==n-1 and aa[n-1]==0){
			ll=-1;
		}
		else{
			ll=l;
		}*/
		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){
			//ll=l;
			ll=l;
		}
		else{
			ll=-1;
		//	return -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 and i!=ind){
				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;
	while(le){
		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[y]=0;
	}
	/*if(kk>1){
		while(true){
			continue;
		}
	}*/
	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(4);


	return 0;
}*/
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 256 KB # of queries: 2940
2 Correct 57 ms 256 KB # of queries: 2901
3 Correct 63 ms 384 KB # of queries: 3084
4 Correct 65 ms 256 KB # of queries: 3038
5 Correct 63 ms 256 KB # of queries: 3062
6 Correct 54 ms 256 KB # of queries: 3074
7 Correct 70 ms 256 KB # of queries: 3026
8 Correct 60 ms 256 KB # of queries: 2937
9 Correct 50 ms 256 KB # of queries: 3079
10 Execution timed out 3047 ms 256 KB Time limit exceeded
11 Correct 4 ms 256 KB # of queries: 0
12 Correct 5 ms 384 KB # of queries: 1
13 Correct 3 ms 256 KB # of queries: 5
14 Correct 5 ms 256 KB # of queries: 9
15 Correct 6 ms 256 KB # of queries: 104
16 Correct 9 ms 256 KB # of queries: 253
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 256 KB # of queries: 2940
2 Correct 57 ms 256 KB # of queries: 2901
3 Correct 63 ms 384 KB # of queries: 3084
4 Correct 65 ms 256 KB # of queries: 3038
5 Correct 63 ms 256 KB # of queries: 3062
6 Correct 54 ms 256 KB # of queries: 3074
7 Correct 70 ms 256 KB # of queries: 3026
8 Correct 60 ms 256 KB # of queries: 2937
9 Correct 50 ms 256 KB # of queries: 3079
10 Execution timed out 3047 ms 256 KB Time limit exceeded
11 Correct 4 ms 256 KB # of queries: 0
12 Correct 5 ms 384 KB # of queries: 1
13 Correct 3 ms 256 KB # of queries: 5
14 Correct 5 ms 256 KB # of queries: 9
15 Correct 6 ms 256 KB # of queries: 104
16 Correct 9 ms 256 KB # of queries: 253
17 Execution timed out 3052 ms 384 KB Time limit exceeded
18 Correct 486 ms 384 KB # of queries: 19485
19 Correct 602 ms 384 KB # of queries: 19764
20 Correct 460 ms 384 KB # of queries: 18574
21 Execution timed out 3062 ms 384 KB Time limit exceeded
22 Execution timed out 3081 ms 384 KB Time limit exceeded
23 Correct 591 ms 384 KB # of queries: 19749
24 Execution timed out 3031 ms 384 KB Time limit exceeded
25 Execution timed out 3077 ms 384 KB Time limit exceeded
26 Execution timed out 3075 ms 384 KB Time limit exceeded
27 Correct 210 ms 384 KB # of queries: 9065
28 Correct 282 ms 376 KB # of queries: 11067
29 Correct 291 ms 384 KB # of queries: 11060
30 Correct 296 ms 504 KB # of queries: 11067