Cod sursa(job #3187941)

Utilizator EftodeAndreiEftode Andrei EftodeAndrei Data 31 decembrie 2023 15:19:17
Problema Jocul Flip Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.42 kb
/*#include<bits/stdc++.h>
using namespace std;
ifstream in("zen.in");
ofstream out("zen.out");
int t[10001], t1[10001], n, m,wh;
int dp[1001][1001];
int dp1[2][10001];
int now[10001], prev[10001],sh[10001];
int rec(int n,int  wh) {
	if (n <= 0) {
		if (t[n] <= wh) return t1[n]; else
		return 0;
	}
	else { 
		int take = 0;
		if (wh - t[n] >= 0) {
			 take = rec(n - 1, wh - t[n]) + t1[n];
		}
		int nottake = rec(n - 1, wh);
		
		return max(take, nottake);
	}
}
int main() {
	in >> n >> wh;
	for (int i = 0; i < n; i++) in >> t[i];
	for (int i = 0; i < n; i++) in >> t1[i];
	//cout << rec(n, wh) << '\n';
	for (int i = t[0]; i <= wh; i++) dp1[0][i] = t1[0];
	for(int i=1;i<n;i++)
		for (int j = 0; j <= wh; j++) {
			int take = INT_MIN, nottake = dp1[(i-1)% 2][j];
						
							
			if (j >= t[i ])
				take = dp1[(i - 1) % 2 ][j - t[i]]+t1[i];
							

						
			dp1[i % 2 ][j] = max(take, nottake);
		}
	cout << dp1[(n - 1) % 2 ][wh];
	*/
/*
	in >> n >> wh;
	for (int i = 0; i < n; i++) in >> t[i];
	for (int i = 0; i < n; i++) in >> t1[i];
	cout << rec(n, wh) << '\n';
	for (int i = t[0]; i <= wh; i++) dp[0][i] = t1[0];
	for (int i = 1; i < n; i++)
		for (int j = 0; j <= wh; j++) {
			int take = INT_MIN, nottake = dp[i - 1][j];


			if (j >= t[i])
				take = dp[i - 1][j - t[i]] + t1[i];



			dp[i][j] = max(take, nottake);
		}
	cout << dp[n - 1][wh];
	// knapsack 0/1 
	*/
//}