제출 #560516

#제출 시각아이디문제언어결과실행 시간메모리
560516AlperenT비스킷 담기 (IOI20_biscuits)C++17
42 / 100
1098 ms8940 KiB
#include "biscuits.h"
#include <bits/stdc++.h>

using namespace std;

long long count_tastiness(long long x, vector<long long> arr){
	vector<pair<long long, long long>> prv, cur;

	while(!arr.empty() && arr.back() == 0) arr.pop_back();

	cur.push_back({0, 1});

	int k = 0;

	while(true){
		bool flag = false;
		long long cnt = k < arr.size() ? arr[k] : 0;

		for(auto i : cur) if(i.first / 2 + cnt - x >= 0) flag = true;

		if(flag || k < arr.size()){
			prv.clear();

			sort(cur.begin(), cur.end());

			for(auto p : cur){
				if(prv.empty() || (prv.back().first != p.first)) prv.push_back(p);
				else prv.back().second += p.second;
			}

			cur.clear();

			for(auto i : prv){
				cur.push_back({i.first / 2 + cnt, i.second});
				if(i.first / 2 + cnt - x >= 0) cur.push_back({i.first / 2 + cnt - x, i.second});
			}
		}
		else break;

		k++;
	}

	long long ans = 0;

	for(auto p : cur) ans += p.second;

	return ans;
}

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

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:17:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   17 |   long long cnt = k < arr.size() ? arr[k] : 0;
      |                   ~~^~~~~~~~~~~~
biscuits.cpp:21:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   21 |   if(flag || k < arr.size()){
      |              ~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...