Submission #717278

#TimeUsernameProblemLanguageResultExecution timeMemory
717278JuanCave (IOI13_cave)C++14
25 / 100
825 ms588 KiB
            #include<bits/stdc++.h>
            #include "cave.h"
            using namespace std;
             
             
            void exploreCave(int N){
            	vector<int> unprocessed;
            	for(int i = 0; i < N; i++) unprocessed.push_back(i);
            	int vask[N]={}, S[N]={};
            	int D[N]={};
            	for(int i = 0; i < N; i++){
            		for(int x : unprocessed) vask[x] = 0;
            		S[i] = 1;
            		if(tryCombination(vask)!=i){
            			for(int x : unprocessed) vask[x] = 1;
            			S[i] = 0;
            		}
             
            		int pos = -1;
            		int l = 0, r = unprocessed.size()-1;
            		while(l<=r){
            			int m = (l+r)>>1;
            			for(int j = 0; j <= m; j++) vask[unprocessed[j]] = 1-vask[unprocessed[j]];
            			int ret = tryCombination(vask);
            			if(ret==i) pos = m, l = m+1;
            			else r = m-1;
             
            			for(int j = 0; j <= m; j++) vask[unprocessed[j]] = 1-vask[unprocessed[j]];
            		}
             
            		D[unprocessed[pos+1]] = i;
                  	vask[unprocessed[pos+1]] = S[i];
            		unprocessed.erase(unprocessed.begin()+pos+1);
            	}
             
            	answer(S, D);
            }
#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...