Pagini recente » Cod sursa (job #633419) | Cod sursa (job #2003279) | Cod sursa (job #2775433) | Cod sursa (job #1542218) | Cod sursa (job #441133)
Cod sursa(job #441133)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
typedef struct mar {
long h;
long g;
} mar;
int n,ha,u;
mar a[10000],v[10000];
void afis() {
int i;
for(i=0;i<n;i++)
printf("%ld ",v[i].g);
printf("\n");
}
void afisare() {
int i;
printf("%d ",n);
printf("%d ",ha);
printf("%d\n",u);
for(i=0;i<n;i++)
printf("%ld %ld\n", v[i].h,v[i].g );
printf("\n");
}
void citire() {
int i;
FILE *f=fopen("gutui.in","r");
fscanf(f , "%d%d%d" , &n , &ha , &u);
for(i=0;i<n;i++)
{
fscanf( f, "%ld%ld" , &a[i].h , &a[i].g );
a[i].h=ha-a[i].h;
}
fclose(f);
}
int compare (const void *a , const void *b) {
return ( (*(mar*)a).h - (*(mar*)b).h );
}
long gutui() {
int i,j,k=0,min,pmin;
long x=0;
qsort(a,n,sizeof(mar),compare);
for(i=0;i<n;i++)
{
if( k <= a[i].h/u )
{
v[k++]=a[i];
x+=a[i].g;
}
else
{
min=v[0].g;
pmin=0;
for(j=0;j<k;j++)
if( v[j].g<min )
{
min=v[j].g;
pmin=j;
}
if(a[i].g>min)
{
x-=v[pmin].g;
v[pmin]=a[i];
x+=a[i].g;
}
}
}
return x;
}
int main() {
long x;
FILE *g;
citire();
g=fopen("gutui.out","w");
x=gutui();
fprintf(g,"%ld",x);
//printf("%ld\n",x);
//afisare();
fclose(g);
//system("pause");
return 0;
}