Cod sursa(job #440081)
Utilizator | Data | 11 aprilie 2010 21:47:59 | |
---|---|---|---|
Problema | Gutui | Scor | 0 |
Compilator | c | Status | done |
Runda | teme_upb | Marime | 2.32 kb |
#include<stdio.h>
#define MAX 100000
int main(){
unsigned int N,H,U;
unsigned int kg[MAX];
unsigned int alt[MAX]; //inaltimea la care se afla gutuile
FILE* f;
f=fopen("gutui.in","r");
fscanf(f,"%d",&N);
fscanf(f,"%d",&H);
fscanf(f,"%d",&U);
unsigned int i,j, aux;
char culese[MAX];
for(i=0;i<N;i++)
{
fscanf(f,"%d",&alt[i]);
fscanf(f,"%d",&kg[i]);
culese[i]=0;
}
for(i=0;i<N-1;i++)
for(j=i;j<N;j++)
{
if(kg[i]<kg[j])
{
aux=alt[i];
alt[i]=alt[j];
alt[j]=aux;
aux=kg[i];
kg[i]=kg[j];
kg[j]=aux;
}
}
unsigned int hmax=H;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
if(alt[i]<=H-j*U && alt[j]>H-j*U )
{
aux=alt[i];
alt[i]=alt[j];
alt[j]=aux;
aux=kg[i];
kg[i]=kg[j];
kg[j]=aux;
}
}
unsigned int total=0;
for(i=0;i<H/U;i++){
if(alt[i]<=hmax){
total+=kg[i];
hmax-=U;
}
}
FILE* g;
g=fopen("gutui.out","w");
fprintf(g,"%d",total);
fclose(f);
fclose(g);
return 0;
}