Submission #314906

#TimeUsernameProblemLanguageResultExecution timeMemory
314906kostia244Counting Mushrooms (IOI20_mushrooms)C++17
75.59 / 100
10 ms384 KiB
    #include "mushrooms.h"
    #include<bits/stdc++.h>
    using namespace std;
    const int C = 400;
    int count_mushrooms(int n) {
    	vector<int> a{0}, b;
    	for(int i = 1; i < min(n, C); i++) {
    		if(max(a.size(), b.size()) > 1 && i+2 < min(n, C)) {
    			if(a.size()>1) {
    				int t = use_machine({a[0], i, a[1], i+1});
    				((t&2) ? b : a).push_back(i);
    				((t&1) ? b : a).push_back(i+1);
    			} else {
    				int t = use_machine({b[0], i, b[1], i+1});
    				((t&2) ? a : b).push_back(i);
    				((t&1) ? a : b).push_back(i+1);
    			}
    			i++;
    		} else
    			(use_machine({0, i}) ? b : a).push_back(i);
    	}
    	int acc = a.size(), T = 0;
    	if(a.size() < b.size()) swap(a, b), T = 1;
    	for(int pos = C; pos < n;) {
    		vector<int> cur;
    		for(int i = 0; i < a.size(); i++) {
    			if(pos < n) cur.push_back(pos++);
    			cur.push_back(a[i]);
    		}
    		//for(auto i : cur) cout << i << " "; cout << endl;
    		int t = use_machine(cur);
    		t += t&1;
    		acc += T ? (t/2) : ((cur.size() - a.size()) - t/2);
    		//cout << acc << endl;
    	}
    	return acc;
    }

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:26:24: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   26 |       for(int i = 0; i < a.size(); i++) {
      |                      ~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...