Cod sursa(job #177519)

Utilizator me_andyAvramescu Andrei me_andy Data 13 aprilie 2008 11:13:03
Problema Orase Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<fstream.h>
#include<math.h>
 ifstream f("orase.in");
 ofstream g("orase.out");
 int d[50001],l[50001],i,j,aux,min,imax=1,x,y;
int divide(int p,int q)
{
 int st=p,dr=q,x=d[p],y=l[p];
 while(st<dr)
 {
  while(st<dr && d[dr]>=x) dr--;
  d[st]=d[dr];
  l[st]=l[dr];
  while(st<dr && d[st]<=x) st++;
  d[dr]=d[st];
  l[dr]=l[st];
 }
 d[st]=x;
 l[st]=y;
 return st;

}
void qsort(int p,int q)
{
 int m=divide(p,q);
 if(m-1>p) qsort(p,m-1);
 if(m+1<q) qsort(m+1,q);
}
int main()
{
 int n;
 int m;
 f>>m;
 f>>n;
 for(i=1;i<=n;i++)
 {
  f>>d[i];
  f>>l[i];
 }
  qsort(1,n);
 min=0;
 imax=1;
 for(i=1;i<=n;i++)
 {
  for(j=imax;j<i;j++)
   if(l[i]+d[i]+l[j]-d[j]>min)
   {
    min=l[i]+l[j]+d[i]-d[j];
    imax=j;
    }
 }
 g<<min;
 f.close();
 g.close();
 return 0;
}