Submission #1007754

#TimeUsernameProblemLanguageResultExecution timeMemory
1007754NewtonabcCave (IOI13_cave)C++14
51 / 100
94 ms604 KiB
#include "cave.h"
#include<bits/stdc++.h>
using namespace std;
/*int tryCombination(int arr[]){
	int ttmp=4;
	for(int i=0;i<ttmp;i++) cout<<arr[i] <<" ";
	cout<<"\n";
	int s;
	cin>>s;
	return s;
}*/
void exploreCave(int N) {
    int arr[N],fix[N],cn[N];
    for(int i=0;i<N;i++) arr[i]=fix[i]=cn[i]=0;
    for(int i=0;i<N;i++){
    	int l=0,r=N;
    	while(l<r){
    		while(fix[l]) l++;
    		while(fix[r]) r--;
    		int mid=(l+r)/2;
    		for(int j=mid+1;j<=r;j++) if(!fix[j]) arr[j]=-1;
    		for(int j=l;j<=mid;j++) if(!fix[j]) arr[j]=0;
    		int tmp=tryCombination(arr);
    		if(tmp==-1) tmp=INT_MAX;
    		if(tmp>i){
    			r=mid;
    			if(l==r) fix[l]=1,cn[l]=i;
    			continue;
			}
			for(int j=l;j<=mid;j++) if(!fix[j]) arr[j]=1;
			tmp=tryCombination(arr);
			if(tmp==-1) tmp=INT_MAX;
			if(tmp>i){
				r=mid;
				if(l==r) fix[l]=1,cn[l]=i;
				continue;
			}
			for(int j=l;j<=mid;j++) if(!fix[j]) arr[j]=-1;
			for(int j=mid+1;j<=r;j++) if(!fix[j]) arr[j]=0;
			tmp=tryCombination(arr);
			if(tmp==-1) tmp=INT_MAX;
			if(tmp>i){
				l=mid+1;
				if(l==r) fix[l]=1,cn[l]=i;
				continue;
			}
			l=mid+1;
			if(l==r) fix[l]=1,cn[l]=i,arr[l]=1;
		}
	}
	/*cout<<endl <<endl <<endl;
	for(int i=0;i<N;i++) cout<<arr[i] <<" ";
	for(int i=0;i<N;i++) cout<<cn[i] <<" ";*/
	answer(arr,cn);
}
/*int main(){
	exploreCave(4);
}*/
#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...