Pagini recente » Cod sursa (job #13120) | Cod sursa (job #2858019) | Scrie articole | Cod sursa (job #1586643) | Cod sursa (job #3284749)
#include <fstream>
#include <cmath>
#include <algorithm>
using namespace std;
ifstream in("orase.in");
ofstream out("orase.out");
struct oras
{
int d, l;
///d = distanta fata de inceputul drumului principal
///l = lungimea drumului lat
};
bool cmp(oras a, oras b)
{
return (a.d < b.d);
}
const int N = 50000; /// strazi laturalnice
const int M = 1000000; /// lungime strada principala
oras o[N];
int distanta(oras a, oras b)
{
return abs(a.d - b.d) + a.l + b.l;
}
int main()
{
int m, n;
in >> m >> n;
for (int i = 0; i < n; i++)
{
in >> o[i].d >> o[i].l;
}
sort(o, o + n, cmp);
int d_max = distanta(o[0], o[1]);
int last = 0;
for (int i = 2; i < n; i++)
{
if (distanta(o[i], o[i - 1]) > distanta(o[last], o[i]));
{
last = i - 1;
}
d_max = max(distanta(o[last], o[i]), d_max);
}
out << d_max << endl;
return 0;
}