Cod sursa(job #2334767)

Utilizator Dragne.Andrei11Dragne Andrei Dragne.Andrei11 Data 3 februarie 2019 00:31:53
Problema Orase Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>

using namespace std;

const int nmax=50005;

struct numere
{
    int l;
    int d;
    bool operator <(const numere &other) const
    {
        return d<other.d;
    }
};

numere aux[nmax];
numere v[nmax];

int main()
{
    freopen("orase.in", "r", stdin);
    freopen("orase.out", "w", stdout);
    int m, n, rasp=0;

    scanf("%d%d", &m, &n);
    for(int i=1;i<=n;i++)
        scanf("%d%d", &aux[i].d, &aux[i].l);
    sort(aux+1, aux+n+1);
    int k=1;
    for(int i=1;i<=n;i++)
    {
        while(aux[i].d==aux[i+1].d&&i<=n)
            i++;
        v[k].d=aux[i].d;
        v[k++].l=aux[i].l;
    }
    int last=0;
    for(int i=2;i<=n;i++)
    {
        if(v[i].l+v[i-1].l+v[i].d-v[i-1].d>v[i].l+v[last].l+v[i].d-v[last].d)
            last=i-1;
        rasp=max(rasp, v[i].l+v[last].l+v[i].d-v[last].d);
    }
    printf("%d\n", rasp);

    return 0;
}