제출 #432517

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

#define int long long

using namespace std;

const int MAXK = 60 + 3;

int dp[2][MAXK], pd[MAXK];

long long count_tastiness(long long x, vector<long long> a) {
	if (x != 1) return 0;
	int k = 60;
	while (a.size() < k) a.push_back(0);
	for (int i = 0; i < k; i++) if (a[i] > 0) {
		if (a[i] % 2 == 0) {
			a[i + 1] += a[i] / 2 - 1;
			a[i] = 2;
		} else {
			a[i + 1] += a[i] / 2;
			a[i] = 1;
		}
	}
	pd[0] = 1;
	dp[0][0] = 0;
	dp[1][0] = (a[0] > 0? 1: 0);
	for (int i = 1; i < k; i++) {
		pd[i] = dp[1][i - 1] + pd[i - 1];
		int tmp = i - 1;
		while (tmp > 0 && a[tmp] == 1) tmp--;
		if (a[tmp] == 0 || (tmp == 0 && a[tmp] == 1)) {
			dp[0][i] = 0;
			if (a[i] == 0) dp[1][i] = 0;
			else dp[1][i] = pd[i];
		} else {
			dp[0][i] = dp[0][tmp] + pd[tmp];
			if (a[i] == 0) dp[1][i] = dp[0][i];
			else dp[1][i] = pd[i];
		}
	}
	return dp[1][k - 1] + pd[k - 1];
}

//int32_t main() { cout << count_tastiness(3, {5, 2, 1}); }//

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

biscuits.cpp: In function 'long long int count_tastiness(long long int, std::vector<long long int>)':
biscuits.cpp:15:18: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   15 |  while (a.size() < k) a.push_back(0);
      |         ~~~~~~~~~^~~
#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...