Pagini recente » Cod sursa (job #2909451) | Cod sursa (job #2312268) | Cod sursa (job #2818766) | Cod sursa (job #2552077) | Cod sursa (job #441255)
Cod sursa(job #441255)
#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[])
{
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]: %d %d \n", i, a[i].h, a[i].g);
candidat=a[i];
if(candidat.h < hmax)
{
rez[k]=candidat.g;
hmax-=u;
k++;
printf("k= %i\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: %d", sum);
FILE* g=fopen("gutui.out", "w");
fprintf(g,"%lu",sum);
fclose(f);
fclose(g);
getch();
return 0;
}