Cod sursa(job #1794673)

Utilizator dnprxDan Pracsiu dnprx Data 1 noiembrie 2016 16:47:02
Problema Orase Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#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;
}