Pagini recente » Cod sursa (job #1264775) | Cod sursa (job #1356962) | Cod sursa (job #2628613) | Cod sursa (job #1991211) | Cod sursa (job #990306)
Cod sursa(job #990306)
#include <iostream>
#include <fstream>
using namespace std;
#define Nmax 50005
int L[Nmax];
int D[Nmax];
int N, M;
void read()
{
ifstream f("orase.in");
f >> M >> N;
for ( int i = 1; i <= N; ++i )
f >> D[i] >> L[i];
f.close();
}
void Qsort( int st, int dr )
{
int i = st, j = dr, pivot = D[(i+j)/2];
do
{
while( D[i] < pivot ) i++;
while( D[j] > pivot ) j--;
if ( i <= j )
{
swap( D[i], D[j] );
swap( L[i], L[j] );
i++;
j--;
}
} while( i < j );
if ( i < dr ) Qsort( i, dr );
if ( st < j ) Qsort( st, j );
}
void solve()
{
ofstream g("orase.out");
int j = 1;
int maxim = 0;
int local = L[1] - D[1];
for ( int i = 2; i <= N; ++i )
{
int dist = L[i] + D[i] + L[j] - D[j];
if ( dist > maxim )
maxim = dist;
if ( L[i] - D[i] > local )
j = i,
local = L[i] - D[i];
}
g << maxim << "\n";
g.close();
}
int main()
{
read();
Qsort( 1, N );
solve();
return 0;
}