Pagini recente » Borderou de evaluare (job #1567338) | Cod sursa (job #1066500) | Cod sursa (job #631881) | Cod sursa (job #1064204) | Cod sursa (job #434114)
Cod sursa(job #434114)
#include <stdio.h>
#include <stdlib.h>
#define NMAX 100000
long int minim (long int v[NMAX], long int i, long int j) {
/*long int a, b, m;
if (i == j) return i;
if (v[i] == 0) return i;
if (v[j] == 0) return j;
m = (i+j)/2;
a = minim (v, i, m);
b = minim (v, m+1, j);
return (v[a] > v[b]) ? b : a;*/
long int k, poz = j;
for (k = j-1; k>=0; k--) {
if (v[k] == 0) return k;
if (v[k] < v[poz])
poz = k;
}
return poz;
}
int main () {
FILE *f, *g;
long int n, hmax, u, h, gr, s=0, i, j, k, 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++) {
printf ("\n");
for (int kk = 0; kk<n ; kk++)
printf ("%ld ", v[kk]);
fscanf (f, "%ld", &h);
fscanf (f, "%ld", &gr);
j = (hmax-h)/u;
if (v[j] == 0) {
v[j] = gr;
s +=gr;
}
else {
k = minim (v, 0, j);
if (gr > v[k]) {
s = s+gr-v[k];
v[k]=gr;
}
}
}
printf ("\n");
for (int kk = 0; kk<n ; kk++)
printf ("%ld ", v[kk]);
fprintf (g, "%ld", s);
}