Cod sursa(job #436793)

Utilizator minwooMinulescu Alexandru minwoo Data 8 aprilie 2010 23:16:20
Problema Gutui Scor 10
Compilator c Status done
Runda teme_upb Marime 1.72 kb
#include <stdio.h>
#include <stdlib.h>


typedef struct {
        int h,g;
        } gutui;

void insertion_sort(gutui a[], int length)
{
  int i;

}



int main(int argc, char *argv[])
{
  int n, hmax, u, deltah = 0, i, j, sum=0;
  FILE* f = fopen("gutui.in", "r");
  fscanf(f,"%d", &n);
  fscanf(f,"%d", &hmax);
  fscanf(f,"%d", &u);
  gutui a[100],  candidat, aux; 
  for (i=1;i<=n;i++) 
      fscanf(f,"%d %d", &a[i].h, &a[i].g);
  //printf ("insertion sort");
    for (i=1; i <= n; i++)
  {
      
      int j;
      gutui v = a[i];

      for (j = i - 1; j >= 1; j--)
      {
          if (a[j].h < v.h) break;
          if (a[j].h == v.h) if (a[j].g<v.g) break;
          a[j + 1] = a[j];
      }
      a[j + 1] = v;

  }
  //for (i=1; i<=n; i++) printf("a[%d]: %d %d \n", i, a[i].h, a[i].g);
  candidat=a[n];
  deltah=candidat.h-a[n-1].h;
  for (i=n-1;i>0;i--) {
      deltah=candidat.h-a[i].h;
      if (deltah>=u) {
      
      hmax-=u;
      sum+=candidat.g;
     // printf("i:%d h=%d g=%d candidat.h=%d candidat.g=%d hmax=%d sum=%d\n", i, a[i].h, a[i].g, candidat.h, candidat.g, hmax, sum);
      candidat=a[i];
      } else if (deltah==0) {
                if (hmax>a[i].h) {
                                 hmax-=u;
                                 sum+=a[i].g;
                                 //printf("a[i].g=%d a[i].h=%d \n", a[i].g, a[i].h);
                                 
                }
             }
      else if (a[i].g>candidat.g) candidat=a[i];
           
             
      
  }
  sum+=candidat.g;
 //printf("suma: %d", sum); 
  FILE* g=fopen("gutui.out", "w");
  fprintf(g,"%d",sum);
  //system("PAUSE");	
  fclose(f);
  fclose(g);
  return 0;
}