Pagini recente » Cod sursa (job #1267454) | Cod sursa (job #214679) | Cod sursa (job #1166104) | Cod sursa (job #2722098) | Cod sursa (job #441257)
Cod sursa(job #441257)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
typedef struct {
unsigned long int h,g;
} gutui;
int compare(const void *a,const void *b)
{
return ((*(gutui *)b).h-(*(gutui *)a).h);
}
int min(int v[10000])
{
int min=32767,i=0;
for(; i<10000; i++)
if(v[i]<min)
min=v[i];
}
int main(int argc, char *argv[])
{
unsigned long int n, hmax, u,i,j,s, sum=0, k=0, minim;
FILE* f = fopen("gutui.in", "r");
fscanf(f,"%lu", &n);
fscanf(f,"%lu", &hmax);
fscanf(f,"%lu", &u);
gutui a[100000], candidat;
int rez[100000];
for (i=0;i<n;i++)
fscanf(f,"%lu %lu", &a[i].h, &a[i].g);
qsort(a,n,sizeof(gutui),compare);
for (i=0; i<n; i++)
{
printf("a[%d]: %lu %lu \n", i, a[i].h, a[i].g);
candidat=a[i];
if(candidat.h < hmax)
{
rez[k]=candidat.g;
hmax-=u;
k++;
printf("k= %lu\n", k);
}
else{
minim=min(rez);
for(j=0; j<k; j++)
if(minim < candidat.g && rez[j]==minim)
rez[j]=candidat.g;
}
}
for(s=0; s<k; s++)
sum+=rez[s];
printf("suma: %lu", sum);
FILE* g=fopen("gutui.out", "w");
fprintf(g,"%lu",sum);
fclose(f);
fclose(g);
getch();
return 0;
}