Pagini recente » Cod sursa (job #2467810) | Cod sursa (job #2273023) | Cod sursa (job #760362) | Cod sursa (job #2909663) | Cod sursa (job #436815)
Cod sursa(job #436815)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
long int h,g;
} gutui;
int main(int argc, char *argv[])
{
unsigned long int n, hmax, u, deltah = 0, i, j, sum=0;
FILE* f = fopen("gutui.in", "r");
fscanf(f,"%d", &n);
fscanf(f,"%d", &hmax);
fscanf(f,"%d", &u);
gutui a[100000], candidat, aux;
for (i=1;i<=n;i++)
fscanf(f,"%d %d", &a[i].h, &a[i].g);
for (i=1; i <= n; i++)
{
int j;
gutui v = a[i];
for (j = i - 1; j >= 1; j--)
{
if (a[j].h < v.h) break;
if (a[j].h == v.h) if (a[j].g<v.g) break;
a[j + 1] = a[j];
}
a[j + 1] = v;
}
candidat=a[n];
deltah=candidat.h-a[n-1].h;
for (i=n-1;i>0;i--) {
deltah=candidat.h-a[i].h;
if (deltah>=u) {
hmax-=u;
sum+=candidat.g;
candidat=a[i];
} else if (deltah==0 && hmax>a[i].h) {
hmax-=u;
sum+=a[i].g;
}
else if (a[i].g>candidat.g) candidat=a[i];
}
sum+=candidat.g;
FILE* g=fopen("gutui.out", "w");
fprintf(g,"%d",sum);
fclose(f);
fclose(g);
return 0;
}