Cod sursa(job #437447)

Utilizator mihaela_29Vilceanu Mihaela mihaela_29 Data 9 aprilie 2010 18:58:34
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.47 kb
#include <stdio.h>
#include <stdlib.h>

int *in, *gr;
int compare (const void * a, const void * b)
{
 return - ( *(int*)a - *(int*)b );
  //return  -( (*(gutui*)a).greutate - (*(gutui*)b).greutate );
}
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 rem(int in[], int n,int h){
    int i,j;
    i=0;
    while(i<n){
    if (in[i]>h) {
    
       for(j=i;j<n-1;j++){
       in[j]=in[j+1];
       gr[j]=gr[j+1];
       }
       n--;
       }
    else i++;
}
    return n;
       }
int main(){
    
    int i,n,h,u,s;
    //int 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));

   
     for(i=0;i<n;i++)
    fscanf(f,"%d%d",&in[i],&gr[i]);
    sort(in,gr,n);
    s=0;
    i=0;
    while(n!=0){
    if(n==rem(in,n,h)){
   // for(j=0;j<n;j++)
     //                printf("in=%d gr=%d ",in[j],gr[j]);
       //              printf("\n");
    s=s+gr[i];
    h=h-u;
   // printf("i=%d h=%d s=%d\n",i,h,s);
    
    i++;
}
 else {n=rem(in,n,h);
 i=0;
}
}
    fprintf(g,"%d",s);               
    getchar();
    return 0;
}