Cod sursa(job #3326453)

Utilizator david333Popescu David david333 Data 29 noiembrie 2025 08:00:51
Problema Orase Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.51 kb
#include <iostream>
using namespace std;

int main() {

    long long M, N;     // M = lungimea străzii principale, N = numărul de orașe
    cin >> M >> N;

    long long D, L;     // D = distanța străzii lăturalnice față de capătul stâng
                        // L = lungimea străzii lăturalnice până la oraș

    // Vom memora extremele celor două expresii:
    // expr1 = D + L
    // expr2 = D - L

    long long max1 = -9000000000000000LL; // cel mai mare D + L
    long long min1 =  9000000000000000LL; // cel mai mic  D + L

    long long max2 = -9000000000000000LL; // cel mai mare D - L
    long long min2 =  9000000000000000LL; // cel mai mic  D - L

    // Citim toate cele N străzi lăturalnice
    for (long long i = 0; i < N; i++) {

        cin>>D>>L;          // citim o stradă

        long long expr1 = D + L;    // coordonata transformata 1
        long long expr2 = D - L;    // coordonata transformata 2

        // Actualizăm extremă maximă și minimă pentru expr1
        if (expr1 > max1) max1 = expr1;
        if (expr1 < min1) min1 = expr1;

        // Actualizăm extremă maximă și minimă pentru expr2
        if (expr2 > max2) max2 = expr2;
        if (expr2 < min2) min2 = expr2;
    }

    // Distanța maximă Manhattan dintre 2 orașe este maximul a două valori:
    long long ans1 = max1 - min1;
    long long ans2 = max2 - min2;

    long long ans;
    if (ans1 > ans2) ans = ans1;
    else ans = ans2;

    cout << ans;
    return 0;
}