Submission #592313

#TimeUsernameProblemLanguageResultExecution timeMemory
592313farhan132Counting Mushrooms (IOI20_mushrooms)C++17
25.17 / 100
18 ms384 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
 
using namespace std;
 
typedef int ll;
typedef pair<ll , ll> ii;
 
#define ff first
#define ss second
#define pb push_back
#define in insert

int count_mushrooms(int n) {
	ll ans = 1;
	
	if(n <= 100){
		for(ll i = 1; i < n; i++){
			ans += 1 - use_machine({0, i});
		}
		return ans;
	}

	vector < ll > done(n + 100, 0);
	vector < ll > A, B;
	A.pb(0);
	for(ll i = 1; i <= 101; i++){
		if(1 - use_machine({0, i})) A.pb(i), ans++;
		else B.pb(i);
		done[i] = 1;
	}
	ll sz; bool f = 0;
	if(B.size() > A.size()) f = 1, sz = B.size();
	else sz = A.size();
	for(ll i = 102; i + sz - 1 < n; i+=sz){
		if(!f){
			vector < ll > cur;
			cur.pb(A[0]); ll p = i, q = 1;
			for(ll j = 1; j < sz; j++){
				done[p] = 1;
				cur.pb(p);
				cur.pb(A[j]);
				p++;
			}
			ll k = use_machine(cur);
			ans += (sz - 1) - (k/2);
		}else{
			vector < ll > cur;
			cur.pb(B[0]); ll p = i, q = 1;
			for(ll j = 1; j < sz; j++){
				done[p] = 1;
				cur.pb(p);
				cur.pb(B[j]);
				p++;
			}
			ll k = use_machine(cur);
			ans += (k/2);
		}
	}
	for(ll i = 1; i < n; i++){
		if(!done[i]) ans += 1 - use_machine({0, i});
	}
	
	return ans;
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:38:28: warning: unused variable 'q' [-Wunused-variable]
   38 |    cur.pb(A[0]); ll p = i, q = 1;
      |                            ^
mushrooms.cpp:49:28: warning: unused variable 'q' [-Wunused-variable]
   49 |    cur.pb(B[0]); ll p = i, q = 1;
      |                            ^
#Verdict Execution timeMemoryGrader output
Fetching results...