제출 #418607

#제출 시각아이디문제언어결과실행 시간메모리
41860720160161simone버섯 세기 (IOI20_mushrooms)C++14
56.36 / 100
11 ms308 KiB
#include "mushrooms.h"
//use_machine
#include <bits/stdc++.h>
using namespace std;
typedef int ll;
const ll N=2e4+10;
vector<ll> a,b;// 
int count_mushrooms(int n){
	a.push_back(0);
	for(ll i=1;i<=sqrt(n)*2-1;i++){
		vector<ll> t;
		t.push_back(0);
		t.push_back(i);
		ll op=use_machine(t);
		if(op==1) b.push_back(i);
		else a.push_back(i);
	}
//	cout<<"___";
//	for(ll i=0;i<a.size();i++) printf("%lld ",a[i]);cout<<endl;
//	for(ll i=0;i<b.size();i++) printf("%lld ",b[i]);cout<<endl;
	ll top=sqrt(n)*2-1;
	if(a.size()>=sqrt(n)){
		ll ans=b.size();
		while(top<n-1){
			vector<ll> t; 
			for(ll i=0;i<a.size();i++){
				t.push_back(a[i]);
				if(top<n-1) t.push_back(++top); 
			}
			ll op=use_machine(t);
			if(op%2==0) a.push_back(t[t.size()-1]); 
			ans+=(op+1)/2;
		}
		return n-ans;
	}
	else{
		ll ans=a.size();
		while(top<n-1){
			vector<ll> t; 
			for(ll i=0;i<b.size();i++){
				t.push_back(b[i]);
				if(top<n-1) t.push_back(++top); 
			}
			ll op=use_machine(t);
			if(op%2==0) b.push_back(t[t.size()-1]); 
			ans+=(op+1)/2;
		}
		return ans;
	}
	return a.size();
}

컴파일 시 표준 에러 (stderr) 메시지

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