Submission #547125

#TimeUsernameProblemLanguageResultExecution timeMemory
547125benson1029Minerals (JOI19_minerals)C++14
90 / 100
63 ms3576 KiB
#include "minerals.h"
#include<bits/stdc++.h>
using namespace std;

bool inside[1000005];
int past = 0;

void solve(vector<int> a, vector<int> b) {
	if(a.size() == 1) {
		Answer(a[0], b[0]);
	} else {
		random_shuffle(b.begin(), b.end());
		vector<int> a1, a2, b1, b2;
		for(int i=0; i<a.size()/2; i++) {
			if(!inside[a[i]]) {
				inside[a[i]] = !inside[a[i]];
				past = Query(a[i]);
			}
			a1.push_back(a[i]);
		}
		for(int i=a.size()/2; i<a.size(); i++) {
			if(inside[a[i]]) {
				inside[a[i]] = !inside[a[i]];
				past = Query(a[i]);
			}
			a2.push_back(a[i]);
		}
		for(int i=0; i<b.size(); i++) {
			if(b1.size() == a1.size()) {
				b2.push_back(b[i]);
			} else if(b2.size() == a2.size()) {
				b1.push_back(b[i]);
			} else {
				int curr;
				inside[b[i]] = !inside[b[i]];
				curr = Query(b[i]);
				if(curr == past) {
					b1.push_back(b[i]);
				} else {
					b2.push_back(b[i]);
				}
				past = curr;
			}
		}
		solve(a1, b1);
		solve(a2, b2);
	}
}

vector<int> t1,t2;

void Solve(int N) {
	// TODO: Implement your solution here
	for(int i=1; i<=2*N; i++) {
		inside[i] = !inside[i];
		int curr = Query(i);
		if(curr == past) t2.push_back(i);
		else t1.push_back(i);
		past = curr;
	}
	solve(t1, t2);
}

Compilation message (stderr)

minerals.cpp: In function 'void solve(std::vector<int>, std::vector<int>)':
minerals.cpp:14:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   14 |   for(int i=0; i<a.size()/2; i++) {
      |                ~^~~~~~~~~~~
minerals.cpp:21:26: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |   for(int i=a.size()/2; i<a.size(); i++) {
      |                         ~^~~~~~~~~
minerals.cpp:28:17: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |   for(int i=0; i<b.size(); i++) {
      |                ~^~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...