Cod sursa(job #3232767)

Utilizator iulia_morariuIulia Morariu iulia_morariu Data 1 iunie 2024 12:26:45
Problema Inundatii Scor 100
Compilator cpp-64 Status done
Runda Simulare E4 #1 Marime 1.3 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
//#include <bits/stdc++.h>
#define ll long long

using namespace std;

ifstream fin("inundatii.in");
ofstream fout("inundatii.out");

signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int n; fin >> n;
    ll c1[n], c2[n], c3[n];

    for(int i = 0; i < n; i++){
        fin >> c1[i] >> c2[i] >> c3[i];
        c1[i] -= i;
        c2[i] -= i;
        c3[i] -= i;
    }

    ll min1 = 0, min2 = 0, min3 = 0;
    priority_queue< ll > pq;
    for(int i = 0; i < n; i++){
        pq.push( c1[i] );
        if(pq.top() > c1[i]){
            min1 += pq.top() - c1[i];
            pq.pop();
            pq.push( c1[i] );
        }
    }

    while(!pq.empty()) pq.pop();
    for(int i = 0; i < n; i++){
        pq.push( c2[i] );
        if(pq.top() > c2[i]){
            min2 += pq.top() - c2[i];
            pq.pop();
            pq.push( c2[i] );
        }
    }

    while(!pq.empty()) pq.pop();
    for(int i = 0; i < n; i++){
        pq.push( c3[i] );
        if(pq.top() > c3[i]){
            min3 += pq.top() - c3[i];
            pq.pop();
            pq.push( c3[i] );
        }
    }
    //cout << "min1 = " << min1 << " min2 = " << min2 << " min3 = " << min3 << '\n';

    fout << min1 + min2 + min3 << '\n';

    return 0;
}