Submission #1007798

#TimeUsernameProblemLanguageResultExecution timeMemory
1007798Newtonabc동굴 (IOI13_cave)C++14
51 / 100
244 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],cp[N];
    for(int i=0;i<N;i++) arr[i]=fix[i]=cn[i]=0;
    int con[N];
    vector<int> v;
    for(int i=0;i<N;i++){
    	v.clear();
    	for(int j=0;j<N;j++){
    		if(fix[j]) continue;
    		v.push_back(arr[j]);
    		con[v.size()-1]=j;
		}
    	int l=0,r=v.size()-1;
    	while(l<r){
    		int mid=(l+r)/2;
    		for(int j=mid+1;j<=r;j++) v[j]=-1;
    		for(int j=l;j<=mid;j++) v[j]=0;
    		for(int j=0;j<N;j++) cp[j]=arr[j];
    		for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
    		int tmp=tryCombination(cp);
    		if(tmp==-1) tmp=INT_MAX;
    		if(tmp>i){
    			r=mid;
    			if(l==r) fix[con[l]]=1,cn[con[l]]=i,arr[con[l]]=0;
    			continue;
			}
			for(int j=l;j<=mid;j++) v[j]=1;
			for(int j=0;j<N;j++) cp[j]=arr[j];
			for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
    		tmp=tryCombination(cp);
			if(tmp==-1) tmp=INT_MAX;
			if(tmp>i){
				r=mid;
				if(l==r) fix[con[l]]=1,cn[con[l]]=i,arr[con[l]]=1;
				continue;
			}
			for(int j=l;j<=mid;j++) v[j]=-1;
			for(int j=mid+1;j<=r;j++) v[j]=0;
			for(int j=0;j<N;j++) cp[j]=arr[j];
			for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
    		tmp=tryCombination(cp);
			if(tmp==-1) tmp=INT_MAX;
			if(tmp>i){
				l=mid+1;
				if(l==r) fix[con[l]]=1,cn[con[l]]=i,arr[con[l]]=0;
				continue;
			}
			l=mid+1;
			if(l==r) fix[con[l]]=1,cn[con[l]]=i,arr[con[l]]=1;
		}
		if(i==N-1){
			for(int j=0;j<N;j++){
				if(!fix[j]){
					cn[j]=i;
					arr[j]=0;
					if(tryCombination(arr)==-1) answer(arr,cn);
					else arr[j]=1,answer(arr,cn);
				}
			}
		}
	}
	
	/*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);
}*/

Compilation message (stderr)

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:30:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |       for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
      |                   ~^~~~~~~~~
cave.cpp:40:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   40 |    for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
      |                ~^~~~~~~~~
cave.cpp:51:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   51 |    for(int j=0;j<v.size();j++) cp[con[j]]=v[j];
      |                ~^~~~~~~~~
#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...