Pagini recente » Cod sursa (job #2766655) | Cod sursa (job #2625433) | Borderou de evaluare (job #2281036) | Cod sursa (job #1087468) | Cod sursa (job #1028855)
#include<stdio.h>
#include<algorithm>
#define maxn 50005
using namespace std;
struct street{int d,l;} a[maxn];
int n,m,nr,sol;
int s[maxn<<1];
void read()
{
scanf("%d%d",&m,&n);
for(int i=1;i<=n;i++)
scanf("%d%d",&a[i].d,&a[i].l);
}
bool cmp(const street &x,const street &y){
return x.d<y.d;
}
void solve()
{
sort(a+1,a+n+1,cmp);
for(int i=2;i<=n;i++)
if(a[i].d==a[i-1].d)
{
if(a[i-1].l>a[i].l)
swap(a[i-1],a[i]);
}
else a[++nr]=a[i-1];
a[++nr]=a[n];
n=0;
for(int i=1;i<nr;i++)
{
s[++n]=a[i].l+a[i+1].l+a[i+1].d-a[i].d;
if(i<nr-1) s[++n]=-2*a[i+1].l;
}
int sum=0;
for(int i=1;i<=n;i++)
{
sum+=s[i];
sol=max(sol,sum);
if(sum<0) sum=0;
}
}
int main()
{
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
read();
solve();
printf("%d",sol);
fclose(stdin);
fclose(stdout);
return 0;
}