Cod sursa(job #437394)

Utilizator mihaela_29Vilceanu Mihaela mihaela_29 Data 9 aprilie 2010 17:51:43
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.33 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;
     for(i=0;i<n;i++)
    if (in[i]>h) {
       for(j=i;j<n;j++)
       in[j]=in[j+1];
       n--;
       }
    return n;
       }
int main(){
    
    int i,n,h,u,s,j,nr_cul;
    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]);
    
    qsort (in, n, sizeof(int), compare);
    for(i=0;i<n;i++)
    //printf("gr=%d in=%d\n", gr[i],in[i]);
    n=rem(in,n,h);
    s=0;
    i=0;
    while(n>0){
    s=s+gr[i];
    h=h-u;
    printf("%d\n",s);
    n=rem(in,n,h);
    i++;
}
    fprintf(g,"%d",s);               
    getchar();
    return 0;
}