Cod sursa(job #175848)

Utilizator rethosPaicu Alexandru rethos Data 10 aprilie 2008 14:53:42
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <cstdio>
#include <algorithm>
#define NM 50001
#define l(x) v[x].l
#define d(x) v[x].d
using namespace std;
struct ch{int l,d;} v[NM];
int n,m;
int cmp(ch x,ch y)
{if (x.d<y.d) return 1;
 return 0;
}
int main()
{freopen("orase.in","r",stdin);
 freopen("orase.out","w",stdout);
 scanf("%d %d",&m,&n);
 if (n==1){printf("0");return 0;}
 int i;
 for (i=1;i<=n;i++) scanf("%d %d",&v[i].d,&v[i].l);
 sort(v+1,v+n+1,cmp);
 int r1=1,r2=2,bufr1,bufr2,max1,max2;
 int max=l(1)+l(2)+d(2)-d(1);
 for (i=3;i<=n;i++)
    {bufr1=r1;bufr2=r2;
     max1=l(r1)+l(i)+d(i)-d(r1);
     max2=l(r2)+l(i)+d(i)-d(r2);
     if (max1>max) {max=max1;
                    r2=i;
                    r1=bufr1;
                   }
     if (max2>max) {max=max2;
     		    r1=i;
                    r2=bufr2;
                   }
    }
 printf("%d",max);
 return 0;
}