Cod sursa(job #2238477)

Utilizator BeniLehelBeni Lehel BeniLehel Data 5 septembrie 2018 20:57:49
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb

#include<stdio.h>


#define FOR(i,n) for (int i=0;i<n;i++)

int n,g;
int w[1000000] = { 0 };
int t[1000000] = { 0 };
int l[1000000] = { 0 };

int main() {

	freopen("rucsac.in", "r", stdin);
	freopen("rucsac.out", "w", stdout);

	scanf("%d%d", &n, &g);

	FOR(i, n) {
		int wi = 0;
		scanf("%d", &wi);
		scanf("%d", &w[wi]);
	}
	
	FOR(i, g) {
		if (w[i]) {
			for (int j = i; j < g; j++) {
				if (t[j - 1] < t[j - i] + w[i] && !l[i]) {
					t[j] = t[j - i] + w[i];
					l[i] = 1;
				}
				else if(t[j]<t[j - i] + w[i])
					t[j] = t[j - 1];
			}
		}
	}
	FOR(i, g)
		printf("%d ", t[i]);

	return 0;
}