Cod sursa(job #3310431)

Utilizator LucaEnescuLuca Enescu LucaEnescu Data 13 septembrie 2025 20:10:04
Problema Orase Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.49 kb
    #include <bits/stdc++.h>

    using namespace std;
    using int64 = long long;
    const int N_MAX = 6e6;
    const int64 myINF = 3e9;

    struct T{
        int d;
        int l;
    }v[N_MAX+1];
    int vdif[N_MAX+1];
    bool cmp (T first, T second) {
        if(first.d < second.d)  return true;
            return false;
         if(first.l<second.l) return true;
            return false;
    }

    ifstream fin ("orase.in");
    ofstream fout ("orase.out");
int main()
{
           int n,m,dd,ll;
           fin >> m >> n;;
           for (int i = 1; i <= n; i ++){
                fin >> dd;
                v[i].d=dd;
                fin >> ll;
                v[i].l=ll;

           }

            sort ( 1+ v, 1+v+n, cmp);


            for(int i=1;i<=n;i++){
                if(i==1)
                 vdif[1]=v[1].d-v[1].l;
                vdif[i]=min(vdif[i-1],v[i].d-v[i].l);
            }


           int64 sum = 0, min_sum = 0; int j = 1;
           int64 answer = -myINF; int left, right;

           for (int i = 1; i <=  n; i ++) {
              int64 candidate = v[i].d + v[i].l - vdif[i];
              if (candidate > answer) {
                answer = candidate;
                left = j;
                right = i;
              }
              else if (candidate == answer && j < left) {
                left = j;
                right = i;
              }

           }
           fout << answer ;
            return 0;
        }