Cod sursa(job #3324101)

Utilizator nopreanOprean Natasha noprean Data 21 noiembrie 2025 08:46:24
Problema Orase Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("orase.in");
ofstream fout("orase.out");
int m,n;
struct strada{
    int d,l;
}A[50001];
bool ord(strada a, strada b)
{
    if(a.l>b.l)
        return true;
    if(a.l==b.l && a.d>b.d)
        return true;
    return false;
}
int main()
{
    fin>>m>>n;
    for(int i=1;i<=n;i++)
        fin>>A[i].d>>A[i].l;
    sort(A+1,A+n+1,ord);
    int distMax=0;
    for(int i=1;i<=n;i++)
        {
            //fout<<A[i].d<<" "<<A[i].l<<endl;
            int p=i-1;
            while(p>=1 && A[p].l==A[i-1].l)
            {
                //fout<<A[p].l<<" "<<A[p].d<<" "<<A[i].l+A[p].l-abs(A[i].d-A[p].d)<<endl;
                distMax=max(distMax,A[i].l+A[p].l+abs(A[i].d-A[p].d));
                p--;
            }
            p=i+1;
            while(p<=n && A[p].l==A[i+1].l)
            {
                //fout<<A[p].l<<" "<<A[p].d<<" "<<A[i].l+A[p].l-abs(A[i].d-A[p].d)<<endl;
                distMax=max(distMax,A[i].l+A[p].l+abs(A[i].d-A[p].d));
                p++;
            }
            //fout<<"distmax="<<distMax<<endl;
        }
    fout<<distMax;
    return 0;
}