Pagini recente » Cod sursa (job #3162934) | Cod sursa (job #2909454) | Cod sursa (job #458110) | Cod sursa (job #908777) | Cod sursa (job #436793)
Cod sursa(job #436793)
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int h,g;
} gutui;
void insertion_sort(gutui a[], int length)
{
int i;
}
int main(int argc, char *argv[])
{
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[100], candidat, aux;
for (i=1;i<=n;i++)
fscanf(f,"%d %d", &a[i].h, &a[i].g);
//printf ("insertion sort");
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;
}
//for (i=1; i<=n; i++) printf("a[%d]: %d %d \n", i, a[i].h, a[i].g);
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;
// printf("i:%d h=%d g=%d candidat.h=%d candidat.g=%d hmax=%d sum=%d\n", i, a[i].h, a[i].g, candidat.h, candidat.g, hmax, sum);
candidat=a[i];
} else if (deltah==0) {
if (hmax>a[i].h) {
hmax-=u;
sum+=a[i].g;
//printf("a[i].g=%d a[i].h=%d \n", a[i].g, a[i].h);
}
}
else if (a[i].g>candidat.g) candidat=a[i];
}
sum+=candidat.g;
//printf("suma: %d", sum);
FILE* g=fopen("gutui.out", "w");
fprintf(g,"%d",sum);
//system("PAUSE");
fclose(f);
fclose(g);
return 0;
}