Pagini recente » Cod sursa (job #908094) | Cod sursa (job #1753787) | Cod sursa (job #2537181) | Cod sursa (job #86201) | Cod sursa (job #441273)
Cod sursa(job #441273)
#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[],int n)
{
int min=32000,i=0;
for(; i<n; i++)
if(v[i]<min)
min=v[i];
return min;
}
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++;
}
else
{
minim=min(rez,k);
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;
}