Cod sursa(job #434345)

Utilizator IgrecCorina Popescu Igrec Data 5 aprilie 2010 17:57:54
Problema Gutui Scor 30
Compilator cpp Status done
Runda teme_upb Marime 0.85 kb
#include <stdio.h>
#include <stdlib.h>

#define NMAX 100001

long int min (long int v[NMAX], long int n) {
	long int minim = n;
	long int i;
	for (i=n-1; i>0; i--) {
		if (v[i] == 0) {
			return i;
		}
		if (v[i] < v[minim]) {
			minim = i;
		}
	}
	return minim;
}

int main () {

FILE *f, *g;
long int n, hmax, u, h, val, s=0, i, j, v[NMAX];


f = fopen ("gutui.in", "r");
g = fopen ("gutui.out", "w");

fscanf (f, "%ld", &n);
fscanf (f, "%ld", &hmax);
fscanf (f, "%ld", &u);

for (i=1; i<=n; i++) {
	fscanf (f, "%ld", &h);
	fscanf (f, "%ld", &val);
	j = (hmax-h)/u + 1;
	if (v[j] == 0) {
		v[j] = val;
		s +=val;
	}
	else {
		if (val > v[j]) {
			long int aux = v[j];
			v[j] = val; val = aux;
			s = s-val+v[j];
		}
		long int k = min (v, j);
		if (val > v[k]) {
			s = s-v[k]+val;
			v[k] = val;
		}
	}
}

fprintf (g, "%ld", s);
	

fclose (f); fclose (g);

return 0;
}