Submission #736769

#TimeUsernameProblemLanguageResultExecution timeMemory
736769jk410Rarest Insects (IOI22_insects)C++17
99.56 / 100
78 ms308 KiB
#include "insects.h"
#include <bits/stdc++.h>
using namespace std;
int n;
bool used[2000],check[2000][2];
int mySolve[2001];
int solve(int x) {
	int& ret = mySolve[x];
	if (ret != -1)
		return ret;
	ret = 0;
	for (int i = 0; i < n; i++) {
		if (!check[i][0] && !check[i][1]) {
			move_inside(i);
			used[i] = true;
			if (press_button() > x) {
				used[i] = false;
				move_outside(i);
			}
		}
		if (used[i])
			ret++;
	}
	return ret;
}
int min_cardinality(int _n) {
	n = _n;
	memset(mySolve, -1, sizeof(mySolve));
	int cnt = solve(1);
	int l = 1, r = n / cnt, ans;
	while (l <= r) {
		int m = (l + r) >> 1;
		if (solve(m) == cnt * m) {
			for (int i = 0; i < n; i++) {
				if (used[i])
					check[i][0] = true;
			}
			ans = m;
			l = m + 1;
		}
		else {
			for (int i = 0; i < n; i++) {
				if (!used[i])
					check[i][1] = true;
				if (used[i] && !check[i][0]) {
					used[i] = false;
					move_outside(i);
				}
			}
			r = m - 1;
		}
	}
	return ans;
}

Compilation message (stderr)

insects.cpp: In function 'int min_cardinality(int)':
insects.cpp:53:9: warning: 'ans' may be used uninitialized in this function [-Wmaybe-uninitialized]
   53 |  return ans;
      |         ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...