Pagini recente » Cod sursa (job #2450835) | Cod sursa (job #1933110) | Cod sursa (job #1305535) | Cod sursa (job #2534481) | Cod sursa (job #437318)
Cod sursa(job #437318)
#include <stdio.h>
#include <stdlib.h>
void sort(int in[],int gr[],int n){
int i,j,aux;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if (in[i]>in[j]){
aux=in[i];
in[i]=in[j];
in[j]=aux;
aux=gr[i];
gr[i]=gr[j];
gr[j]=aux;
}
}
int main(){
int *in, *gr,*gm,*nr_cul;
int i,n,h,u,s,j;
FILE *f=fopen("gutui.in","r");
FILE *g=fopen("gutui.out","w");
fscanf(f,"%d%d%d",&n,&h,&u);
in=(int*)malloc(n*sizeof(int));
gr=(int*)malloc(n*sizeof(int));
gm=(int*)malloc(n*sizeof(int));
nr_cul=(int*)malloc(n*sizeof(int));
for(i=0;i<n;i++)
fscanf(f,"%d%d",&in[i],&gr[i]);
/* for(i=0;i<n;i++)
printf("in=%d gr=%d\n",in[i],gr[i]);
printf("\n");
sort(in,gr,n);
for(i=0;i<n;i++)
printf("in=%d gr=%d\n",in[i],gr[i]);*/
s=0;
for(i=0;i<n;i++){
gm[i]=gr[i];
nr_cul[i]=1;
for(j=0;j<n;j++)
if((in[i]+u*nr_cul[j]<=h) &&(gm[i]<=gr[i]+gm[j])) {
gm[i]=gm[j]+gr[j];
nr_cul[i]=nr_cul[j]+1;
}
if (gm[i]>s) s=s+gm[i];
}
fprintf(g,"%d",s);
getchar();
}