Pagini recente » Cod sursa (job #2175468) | Cod sursa (job #2819331) | Cod sursa (job #937890) | Cod sursa (job #1780857) | Cod sursa (job #1794673)
#include <bits/stdc++.h>
using namespace std;
struct orase
{
int D, L;
};
orase a[50001];
int N, M, mx[50001];
/// mx[i] = max(L[j] - D[j], j = 1..i)
void Citire()
{
int i;
ifstream fin("orase.in");
fin >> M >> N;
for (i = 0; i < N; ++i)
fin >> a[i].D >> a[i].L;
fin.close();
}
inline bool Compara(const orase A, const orase B)
{
return A.D < B.D;
}
void Rezolva()
{
int i, x, distmax;
/// distanta dintre orasele j si i (j < i)
/// este Li + Lj + (Di - Dj)
sort(a, a + N, Compara);
mx[0] = a[0].L - a[0].D;
for (i = 1; i < N; ++i)
{
x = a[i].L - a[i].D;
mx[i] = max(mx[i-1], x);
}
distmax = 0;
for (i = 1; i < N; ++i)
distmax = max(a[i].L + a[i].D + mx[i - 1], distmax);
ofstream fout("orase.out");
fout << distmax << "\n";
fout.close();
}
int main()
{
Citire();
Rezolva();
return 0;
}