Cod sursa(job #433554)

Utilizator yeaaamihai simion yeaaa Data 3 aprilie 2010 20:39:05
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.38 kb
#include <stdio.h>
//#include <conio.h>

#define  NMAX      100000

typedef struct gutuie{
        int in; // inaltime
        int gr; // greutate
} gutuie;

void ordonare(gutuie g[NMAX], int n){
     gutuie aux;
     int i,j;
     
     for(i = 0; i < n-1; i++)
           for(j = i+1; j < n; j++)
                 if(g[i].in < g[j].in){
                      aux = g[i];
                      g[i] = g[j];
                      g[j] = aux;
                 }
}

int alegere(gutuie g[NMAX], int n, int h, int u){
    int rid = 0;; // ridicare curenta
    int i;
    int rez = 0;
    
    for(i = 0; i < n; i++){
          if(g[i].in + rid <= h){
               rez += g[i].gr;
               rid += u;
          }
    }
    
    return rez;
}

int main(){
    FILE* f;
    int n, h, u;
    gutuie g[NMAX];
    int i;
    int rez;
    
    f = fopen("gutui.in","r");
    fscanf(f,"%d %d %d",&n,&h,&u);
    for(i = 0; i < n; i++)
          fscanf(f,"%d %d", &g[i].in, &g[i].gr);
    fclose(f);
    
    // aflare valoare
    ordonare(g,n);
    rez = alegere(g,n,h,u);
    
//    // debugging
//    printf("%d %d %d\n",n,h,u);
//    for(i = 0; i < n; i++)
//          printf("%d %d\n",g[i].in, g[i].gr);
    
    // scriere
    f = fopen("gutui.out","w");
    fprintf(f,"%d",rez);
    fclose(f);
    
    // terminare
//    getch();
    return 0;
}