Submission #1310880

#TimeUsernameProblemLanguageResultExecution timeMemory
1310880dimitri.shengeliaCave (IOI13_cave)C++20
13 / 100
183 ms564 KiB
#include <bits/stdc++.h>
#include "cave.h"

using namespace std;

int tryCombination ( int S[] );

void answer ( int S[], int D[] );

void exploreCave( int N ) {

	int n = N;

	int a[n], b[n];

	vector <int> v;

	for ( int i = 0; i < n; i++ ) {

		v.push_back( i );

	}

	int k;

	int l, r;

	for ( int i = 0; i < n; i++ ) {

		for ( auto x : v ) {

			a[x] = 0;

		}

		int k = tryCombination( a );

		if ( k == -1 or k > i ) {

			k = 0;

		} else {

			k = 1;

		}

		l = 0, r = v.size();
		
		int z;

		while ( l <= r ) {

			int m = ( l + r ) / 2;

			for ( int j = m; j < (int)v.size(); j++ ) {

				a[v[j]] = 1 - k;

			}

			int k1 = tryCombination( a );

			if ( k1 == -1 or k1 > i ) {

				r = m - 1;
				
				z = m - 1;

			} else {
			    
			    z = m;

				l = m + 1;

			}

			for ( int j = m; j < (int)v.size(); j++ ) {

				a[v[j]] = k;

			}

		}

		a[v[z]] = k;

		b[v[z]] = i;

		v.erase( v.begin() + z );

	}

	answer( a, b );

	return;

}
#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...