제출 #1149998

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

using namespace std;

const int N = 100;
long long dp[N][2][2];	
long long count_tastiness(long long x, std::vector<long long> a) {
	for(int i = 0;i < a.size();i++){
		if(a[i] > 2){
			long long d = (a[i]-1)/2;
			if(i == a.size()-1) a.push_back(0);
			a[i+1] += d;
			a[i] -= 2*d;
		}
	}
	a.push_back(0);
	a.push_back(0);
	dp[0][0][0] = 1;
	dp[0][0][1] = (a[0] == 2);
	dp[0][1][0] = (a[0] >= 1);
	dp[0][1][1] = 0;
	for(int i = 1;i <= a.size();i++){
		dp[i][0][0] = dp[i-1][0][0] + dp[i-1][1][0];
		dp[i][1][0] = (a[i] == 0 ? dp[i-1][0][1] + dp[i-1][1][1] : dp[i-1][0][0] + dp[i-1][1][0]);
		dp[i][0][1] = (a[i] == 0 ? 0 : (a[i] == 1 ? dp[i-1][0][1] + dp[i-1][1][1] : dp[i-1][0][0] + dp[i-1][1][0]));
		dp[i][1][1] = (a[i] == 2 ? dp[i-1][0][1] + dp[i-1][1][1] : 0);
		//cout << dp[i][0][0] << ' ' << dp[i][0][1] << ' ' << dp[i][1][0] << ' ' << dp[i][1][1] << endl;
	}
	return dp[a.size()][0][0] + dp[a.size()][1][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...