Submission #1117256

#TimeUsernameProblemLanguageResultExecution timeMemory
1117256pokmui9909버섯 세기 (IOI20_mushrooms)C++17
56.93 / 100
11 ms628 KiB
#include "mushrooms.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;

#define x first
#define y second

int count_mushrooms(int N){
    ll B = min(N, 100), S = 1;
    vector<ll> P, Q;
    P.push_back(0);
    while(S < N && P.size() < B && Q.size() < B){
        ll f = use_machine((vector<int>){0, S});
        if(f == 0){
            P.push_back(S);
        } else {
            Q.push_back(S);
        }
        S++;
    }
    B = max(P.size(), Q.size());
    ll Rev = 0;
    if(Q.size() == B){
        Rev = 1;
        swap(P, Q);
    }
    ll Ans = P.size();
    for(ll i = S; i < N; i += B){
        vector<int> V;
        for(ll j = 0; j < B; j++){
            if(i + j >= N) break;
            V.push_back(P[j]);
            V.push_back(i + j);
            Ans++;
        }
        ll t = use_machine(V);
        Ans -= (t / 2) + (t % 2);
    }
    return (Rev == 0 ? Ans : N - Ans);
}

Compilation message (stderr)

mushrooms.cpp: In function 'int count_mushrooms(int)':
mushrooms.cpp:13:29: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   13 |     while(S < N && P.size() < B && Q.size() < B){
      |                    ~~~~~~~~~^~~
mushrooms.cpp:13:45: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   13 |     while(S < N && P.size() < B && Q.size() < B){
      |                                    ~~~~~~~~~^~~
mushrooms.cpp:14:45: warning: narrowing conversion of 'S' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
   14 |         ll f = use_machine((vector<int>){0, S});
      |                                             ^
mushrooms.cpp:14:45: warning: narrowing conversion of 'S' from 'll' {aka 'long long int'} to 'int' [-Wnarrowing]
mushrooms.cpp:24:17: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   24 |     if(Q.size() == B){
      |        ~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...