Pagini recente » Cod sursa (job #497877) | Cod sursa (job #1559081) | Cod sursa (job #3220877) | Cod sursa (job #2411810) | Cod sursa (job #67519)
Cod sursa(job #67519)
#include <stdio.h>
#include <algorithm>
using namespace std;
const int n_max = 50005;
struct oras
{
int l, d;
} a[n_max];
int i, t1, t2, tt1, tt2, MAX, max2, n, m;
bool cmpf(const oras a, const oras b)
{
return a.d < b.d;
}
inline int abs(int x)
{
if (x < 0) return -x;
return x;
}
inline int dist(int x, int y)
{
return abs(a[x].d-a[y].d)+a[x].l+a[y].l;
}
int main()
{
freopen("orase.in","r",stdin);
freopen("orase.out","w",stdout);
scanf("%d %d", &m, &n);
for (i = 1; i <= n; ++ i)
scanf("%d %d",&a[i].d,&a[i].l);
sort(a + 1, a + n + 1, cmpf);
MAX = dist(1,2);
t1 = 1;
t2 = 2;
for (i = 3; i <= n; ++ i)
{
if (dist(t1, i) > dist(t2, i))
{
max2 = dist(t1,i);
tt1 = t1;
tt2 = i;
}
else
{
max2 = dist(t2,i);
tt1 = t2;
tt2 = i;
}
if (max2 > MAX)
{
MAX = max2;
t1 = tt1;
t2 = tt2;
}
}
printf("%d\n",MAX);
return 0;
}