Cod sursa(job #93663)

Utilizator me_andyAvramescu Andrei me_andy Data 19 octombrie 2007 19:57:54
Problema Orase Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<fstream.h>
#include<math.h>
 ifstream f("orase.in");
 ofstream g("orase.out");
 int d[5001],l[5001],i,j,aux,min,imax=1,x,y,k;

int main()
{
 int n;
 int m;
 f>>m;
 f>>n;
 f>>d[1];
 f>>l[1];
 f>>d[2];
 f>>l[2];
 if(d[1]>d[2])
 {
  aux=d[1];
  d[1]=d[2];
  d[2]=aux;
   aux=l[1];
  l[1]=l[2];
  l[2]=aux;
 }
 for(i=3;i<=n;i++)
 {
 f>>x;
 f>>y;
 if(x<d[1])
 {
  for(j=i;j>=2;j--)
  {
   d[j]=d[j-1];
   l[j]=l[j-1];
  }
  d[1]=x;
  l[1]=y;
 }
 else
  for(j=1;j<i;j++)
 {
    if(x>=d[j] && x<d[j+1])
    {

  for(k=i;k>=j+1;k--)
  {
   d[k]=d[k-1];
   l[k]=l[k-1];

  }
  d[j]=x;
  l[j]=y;
  break;
  }

 }
 }
/* for(i=1;i<n;i++)
  for(j=i+1;j<=n;j++)
  if(d[i]>d[j])
  {
   aux=d[i];
   d[i]=d[j];
   d[j]=aux;
    aux=l[i];
   l[i]=l[j];
   l[j]=aux;
  }           */
 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;
}