Pagini recente » Cod sursa (job #1492005) | Cod sursa (job #2504911) | Cod sursa (job #1935688) | Cod sursa (job #3236872) | Cod sursa (job #1699793)
#include <iostream>
#include <fstream>
#include <chrono>
#include <vector>
using namespace std;
using namespace std::chrono;
#define M 1000001
pair<int,int> roads[M];
int main() {
ifstream in("orase.in");
ofstream out("orase.out");
int m, n;
in>>m>>n;
int li, di;
for (int i = 0; i < n; ++i) {
in>>di>>li;
if (roads[di].first < li ) {
int aux = roads[di].first;
roads[di].first = li;
roads[di].second = aux;
} else if (roads[di].second < li) {
roads[di].second = li;
}
}
for (int i = 0; i <=m; ++i) {
cout<<roads[i].first << " "<<roads[i].second<<"\n";
}
int maxDist;
int result = -1;
int i;
for (i = 0; i <= m; ++i) {
if (roads[i].first + roads[i].second > result) {
result = roads[i].first + roads[i].second;
}
if ( roads[i].first > 0) {
maxDist = i + roads[i].first;
if (maxDist > result) {
result = maxDist;
}
break;
}
}
for (i = i + 1; i <= m; ++i) {
maxDist++;
if (roads[i].first + roads[i].second > result) {
result = roads[i].first + roads[i].second;
}
if ( roads[i].first > 0 ) {
if (roads[i].first + maxDist > result) {
result = roads[i].first + maxDist;
}
if (roads[i].first > maxDist) {
maxDist = roads[i].first;
}
}
}
out<<result;
out.close();
}