Cod sursa(job #437319)

Utilizator mihaela_29Vilceanu Mihaela mihaela_29 Data 9 aprilie 2010 16:40:49
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.3 kb
#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();
    return 0;
}