Cod sursa(job #69597)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 3 iulie 2007 16:31:22
Problema Orase Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<stdio.h>
#include<stdlib.h>
FILE*f=fopen("orase.in","r");
FILE*g=fopen("orase.out","w");

long n,m,dmax=-100, max;
typedef struct
{
  long d, l;
} Oras;

Oras v[50000];

void citire()
{
  long j, s, i;
  fscanf(f,"%ld %ld",&m,&n);
  for(i=1;i<=n;++i)
    {
      fscanf(f,"%ld %ld",&v[i].d,&v[i].l);
      for (j=1; j<i; j++)
	{ s=abs(v[i].d-v[i+1].d)+v[i].l+v[i+1].l;
	  if (s>max) max=s;
	}
    }

}


int pozitie(int p,int u)
{ int st,dr;
  Oras aux;
  st=p;dr=u;aux=v[p];
  while(st<dr)
  { while(st<dr && v[dr].l>=aux.l) dr--;
    v[st]=v[dr];
    while(st<dr && v[st].l<=aux.l) st++;
    v[dr]=v[st];
  }
  v[st]=aux;
  return st;
}
void qsort(int p,int u)
{ int m=pozitie(p,u);
  if(p<m) qsort(p,m-1);
  if(m<u) qsort(m+1,u);
}

void calcul()
{
  int i;
	    /*
  qsort(1,n);
  long smax, s;
  smax=v[1].l+v[2].l+abs(v[1].d-v[2].d);

  for(i=2;i<n;i++)
    { s=abs(v[i].d-v[i+1].d)+v[i].l+v[i+1].l;
      if(s>smax) smax=s;
    }         */

  fprintf(g,"%ld",max);
}

int main()
{
  citire();
  calcul();
  fclose(f);
  fclose(g);
  return 0;
}