Cod sursa(job #753678)

Utilizator swim406Teudan Adina swim406 Data 30 mai 2012 11:58:11
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.03 kb
#include<stdio.h>
using namespace std;
int main () {
	freopen ( "rucsac.in", "r", stdin );
	freopen ( "rucsac.out", "w", stdout );
	int n, g, weight [5001], price [5001], i, mat [501][501], pmax = 0, gre = 0, ok, j, aux;
	scanf ( "%d %d", &n, &g );
	for ( i = 1; i <= n; i++)
		scanf ("%d %d", &weight [i], &price [i] );
	do {
		ok = 0;
		for ( i = 1; i < n; i++ )
			for ( j = i + 1; j <= n; j++ ) 
				if ( price [i] > price [j] ) {
					aux = weight [i];
					weight [i] = weight [j];
					weight [j] = aux;
					aux = price [i];
					price [i] = price [j];
					price [j] = aux;
					ok = 1;
				}
				else if ( price [i] == price [j] ) 
					if ( weight[i] > weight [j] ) {
						aux = weight [i];
						weight [i] = weight [j];
						weight [j] = aux;
						aux = price [i];
						price [i] = price [j];
						price [j] = aux;
						ok = 1;
					}
	} while ( ok );
	for ( i = 1; i <= n; i++)
		if ( gre + weight [i] <= g ) {
			gre += weight [i];
			pmax += price [i];
		}
	printf ( "%d", pmax);
	return 0;
}