Cod sursa(job #436826)

Utilizator minwooMinulescu Alexandru minwoo Data 8 aprilie 2010 23:47:27
Problema Gutui Scor 0
Compilator c Status done
Runda teme_upb Marime 1.19 kb
#include <stdio.h>
#include <stdlib.h>


typedef struct {
        long int h,g;
        } gutui;

int main(int argc, char *argv[])
{
  long int n, hmax, u, deltah = 0, i, sum=0;
  FILE* f = fopen("gutui.in", "r");
  fscanf(f,"%i", &n);
  fscanf(f,"%i", &hmax);
  fscanf(f,"%i", &u);
  gutui a[100000], candidat, aux; 
  for (i=1;i<=n;i++) 
      fscanf(f,"%i %i", &a[i].h, &a[i].g);
    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;
  }
  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;
      candidat=a[i];
      } else if (deltah==0 && hmax>a[i].h) {
                                 hmax-=u;
                                 sum+=a[i].g;
             }
      else if (a[i].g>candidat.g) candidat=a[i];
  }
  sum+=candidat.g;
   FILE* g=fopen("gutui.out", "w");
  fprintf(g,"%o",sum);
  	
  fclose(f);
  fclose(g);
  return 0;
}