Submission #424163

#TimeUsernameProblemLanguageResultExecution timeMemory
424163SupersonicCounting Mushrooms (IOI20_mushrooms)C++14
65.32 / 100
12 ms336 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
int o(int n){
	int b=-1,m=1e9;
	for(int i=1;i<n;i++){
		if(2*i+(n-(2*i))/i<m){m=2*i+(n-(2*i))/i;b=i;}
	}
	return max(2,b);
}
int count_mushrooms(int n) {
	vector<int> a={0};
	vector<int> b;int c=1;
	int p=o(n);
	while(a.size()<p&&b.size()<p&&c<n){
		int k=use_machine({0,c});
		if(k==1)b.push_back(c);else a.push_back(c);
		c++;
	}
	int ca=a.size(),cb=b.size();
	if(c==n)return ca;
	if(a.size()==p){
		//cerr<<a[0]<<':'<<a[1]<<endl;
		while(c<n){
			vector<int> r;
			for(auto i:a){r.push_back(i);r.push_back(c);c++;if(c==n)break;}
			//for(auto i:r)cerr<<i<<' ';cerr<<endl;
			int k=use_machine(r);if(k%2==0)a.push_back(r.back());
			cb+=(k+1)/2;
		}
		return n-cb;
	}
	else {
		while(c<n){
			vector<int> r;
			for(auto i:b){r.push_back(i);r.push_back(c);c++;if(c==n)break;}
			//for(auto i:r)cerr<<i<<' ';cerr<<endl;
			int k=use_machine(r);if(k%2==0)b.push_back(r.back());
			ca+=(k+1)/2;
		}
		return ca;
	}
	exit(1);
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:15:16: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   15 |  while(a.size()<p&&b.size()<p&&c<n){
      |        ~~~~~~~~^~
mushrooms.cpp:15:28: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   15 |  while(a.size()<p&&b.size()<p&&c<n){
      |                    ~~~~~~~~^~
mushrooms.cpp:22:13: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   22 |  if(a.size()==p){
      |     ~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...