Cod sursa(job #1787382)

Utilizator danyvsDan Castan danyvs Data 24 octombrie 2016 16:43:15
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream fin("orase.in");
ofstream fout("orase.out");

const int NMAX = 50001;

int m, n;
pair < int, int > P[NMAX];

void read()
{
    int i;
    fin >> m >> n;
    for (i = 1; i <= n; ++ i)
        fin >> P[i].first >> P[i].second;
}

inline bool comp(pair < int, int > P1, pair < int, int > P2)
{
    if (P1.first < P2.first)
        return true;
    if (P1.first == P2.first && P1.second < P2.second)
        return true;
    return false;
}

inline int max(int a, int b)
{
    return a > b ? a : b;
}

int dist()
{
    int i, mx, dmx;
    mx = P[1].second - P[1].first;
    dmx = P[2].second + P[2].first + mx;
    for (i = 3; i <= n; ++ i)
        {
         if (P[i - 1].second - P[i - 1].first > mx)
            mx = P[i - 1].second - P[i - 1].first;
         if (P[i].second + P[i].first + mx > dmx)
            dmx = P[i].second + P[i].first + mx;
        }
    return dmx;
}

int main()
{
    read();
    fin.close();
    sort (P + 1, P + n + 1, comp);
    fout << dist() << "\n";
    fout.close();
    return 0;
}