Pagini recente » Cod sursa (job #2949843) | Cod sursa (job #2061685) | Cod sursa (job #1255885) | Cod sursa (job #787652) | Cod sursa (job #384593)
Cod sursa(job #384593)
#include <fstream>
#include <algorithm>
using namespace std;
#define NMax 50001
#define FOR(i,a,b) for ( int i = a; i <= b; ++i )
ifstream in ( "orase.in" );
ofstream out ( "orase.out" );
struct oras
{
int d, l;
} v [ NMax ];
int N, M;
bool comp ( oras a, oras b )
{
return a .d < b .d;
}
int main ()
{
in >> M >> N;
FOR ( i, 1, N )
in >> v [ i ] .d >> v [ i ] .l;
sort ( v + 1, v + N + 1, comp );
int i0 = 1, dmax = 0, i1 = 1;
FOR ( i, 2, N )
if ( v [ i ] .l + v [ i0 ] .l + v [ i ] .d - v [ i0 ] .d > dmax )
{
dmax = v [ i ] .l + v [ i0 ] .l + v [ i ] .d - v [ i0 ] .d;
i1 = i;
}
i0 = i1;
FOR ( i, i0, N )
if ( v [ i ] .l + v [ i0 ] .l + v [ i ] .d - v [ i0 ] .d > dmax )
dmax = v [ i ] .l + v [ i0 ] .l + v [ i ] .d - v [ i0 ] .d;
for ( int i = i0; i >= 1; --i )
{
if ( v [ i0 ] .l + v [ i0 ] .d - v [ i ] .d + v [ i ] .l > dmax )
dmax = v [ i0 ] .l + v [ i0 ] .d - v [ i ] .d + v [ i ] .l;
}
out << dmax;
return 0;
}