Pagini recente » Cod sursa (job #98807) | Cod sursa (job #1331962) | Cod sursa (job #2699188) | Cod sursa (job #717573) | Cod sursa (job #719063)
Cod sursa(job #719063)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
#define maxN 50100
#define int64 long long
#define f first
#define s second
#define inf (1 << 30)
pair <int, int> D[maxN];
int64 A[4 * maxN], B[4 * maxN];
int main()
{
freopen ("orase.in", "r", stdin);
freopen ("orase.out", "w", stdout);
int N, M;
scanf ("%d %d", &N, &M);
for (int i = 1; i <= M; ++ i) scanf ("%d %d", &D[i].f, &D[i].s);
sort (D + 1, D + M + 1);
int start = 0, dim = 0;
for (int i = 1; i <= M; ++ i)
{
if (D[i].f > start)
{
A[++ dim] = A[dim - 1] + D[i].f - start;
B[dim] = B[dim - 1] + D[i].f - start;
start = D[i].f;
}
A[++ dim] = A[dim - 1] + D[i].s;
B[dim] = B[dim - 1] - D[i].s;
A[++ dim] = A[dim - 1] - D[i].s;
B[dim] = B[dim - 1] + D[i].s;
}
int64 minim = 0, ans = - inf;
for (int i = 1; i <= dim; ++ i)
{
if (A[i] - minim > ans) ans = A[i] - minim;
if (B[i] < minim) minim = B[i];
}
printf ("%lld", ans);
return 0;
}