제출 #1075169

#제출 시각아이디문제언어결과실행 시간메모리
1075169allin27x비스킷 담기 (IOI20_biscuits)C++17
0 / 100
89 ms15440 KiB
#include <bits/stdc++.h>
using namespace std;
#include "biscuits.h"
#define int long long

map<pair<int,int>,int> memo;
vector<int> A;
int n,X;

int dp(int i, int add) {
	if (memo.count({i,add})) return memo[{i,add}];
	if (i==n-1) return memo[{i,add}] = add+1;
	if (A[i] + add < X) return memo[{i,add}]=dp(i+1, (A[i]+add)/2);
	return memo[{i,add}] = dp(i+1, (A[i]+add)/2) + dp(i+1, (A[i]+add-X)/2);
}

long long count_tastiness(long long x, std::vector<long long> a) {
	a.resize(a.size()+65, 0);n = a.size(); X=x;
	int extra = 0;
	for (int i=0; i<a.size(); i++) {
		extra/=2; a[i] += extra; extra = 0;
		if (a[i] < x+2) continue;
		if ((a[i]-x)&1) {
			extra = a[i] - x - 1; a[i] = x+1;
		} else {
			extra = a[i] - x; a[i] = x;
		}
	}
	A=a;
	return dp(0,0);
}

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

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