Submission #1007818

#TimeUsernameProblemLanguageResultExecution timeMemory
1007818NewtonabcCave (IOI13_cave)C++14
51 / 100
105 ms488 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-1;
    	while(l<r){
    		while(fix[l]) l++;
    		while(fix[r]) r--;
    		int mid=(l+r)/2;
    		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]=1;
    		int tmp=tryCombination(arr);
    		if(tmp==-1) tmp=INT_MAX;
    		if(tmp>i){
    			for(int j=l;j<=mid;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) cn[l]=i,arr[l]=1,fix[l]=1;
					continue;
				}
				else{
					r=mid;
					if(l==r) cn[l]=i,arr[l]=1,fix[l]=1;
					continue;
				}
			}
			else{
				for(int j=l;j<=mid;j++) if(!fix[j]) arr[j]=0;
				tmp=tryCombination(arr);
				if(tmp==-1) tmp=INT_MAX;
				if(tmp>i){
					r=mid;
					if(l==r) cn[l]=i,arr[l]=0,fix[l]=1;
					continue;
				}
				else{
					l=mid+1;
					if(l==r) cn[l]=i,arr[l]=0,fix[l]=1;
					continue;
				}
			}
			
		}
	}
	/*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...