110332024-06-28 11:01:05BaranJModern Artcpp17Hibás válasz 0/10017ms1528 KiB
#include<bits/stdc++.h>
using namespace std;

int main(){
    int n; cin>>n;
    vector<pair<long long, int>> t(2*n);
    vector<int> x(n);
    for(int i=0; i<n; i++){
        cin>>x[i];
    }
    for(int i=0; i<n; i++){
        int r; cin>>r;
        t[2*i]={x[i]-r, 2*r};
        t[2*i+1]={x[i]+r, -2*r};
    }
    sort(t.begin(), t.end());
    long long unio=0, most=0, previ=0;
    map<int, int> m;
    m[0]=1;

    for(int i=0; i<2*n; i++){
        unio+=most*(t[i].first-previ);
        //cout<<most<<" "<<t[i].first<<" "<<previ<<" "<<most*(t[i].first-previ)<<endl;
        previ=t[i].first;
        while(true){
            if(t[i].second > 0){m[-t[i].second]++;}
            else{
                m[t[i].second]--;
                if(m[t[i].second]==0){
                    m.erase(t[i].second);
                }
            }

            if(i >=2*n-1 || t[i].first!=t[i+1].first){break;}
            i++;
        }
        /*for (auto itr = m.begin(); itr != m.end(); ++itr) {
            cout << itr->first
             << '\t' << itr->second << '\n';
        }*/

        most=-m.begin()->first;
        //cout<<most<<" ";
    }
    cout<<endl<<unio;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Hibás válasz2ms356 KiB
2Hibás válasz2ms356 KiB
subtask20/5
3Hibás válasz6ms872 KiB
4Hibás válasz8ms780 KiB
5Hibás válasz8ms656 KiB
6Hibás válasz10ms892 KiB
7Hibás válasz12ms840 KiB
8Hibás válasz9ms756 KiB
9Hibás válasz9ms740 KiB
10Hibás válasz3ms504 KiB
subtask30/15
11Hibás válasz3ms508 KiB
12Hibás válasz3ms356 KiB
13Hibás válasz3ms504 KiB
14Hibás válasz3ms384 KiB
15Hibás válasz3ms356 KiB
16Hibás válasz2ms496 KiB
17Hibás válasz3ms516 KiB
18Hibás válasz3ms504 KiB
19Hibás válasz3ms504 KiB
subtask40/30
20Hibás válasz3ms356 KiB
21Hibás válasz3ms484 KiB
22Hibás válasz3ms356 KiB
23Hibás válasz4ms484 KiB
24Hibás válasz3ms428 KiB
25Hibás válasz3ms356 KiB
26Hibás válasz3ms496 KiB
27Hibás válasz3ms620 KiB
28Hibás válasz3ms356 KiB
subtask50/50
29Hibás válasz3ms572 KiB
30Hibás válasz4ms356 KiB
31Hibás válasz6ms572 KiB
32Hibás válasz12ms912 KiB
33Hibás válasz12ms760 KiB
34Hibás válasz7ms668 KiB
35Hibás válasz13ms1016 KiB
36Hibás válasz4ms504 KiB
37Hibás válasz14ms892 KiB
38Hibás válasz14ms868 KiB
39Hibás válasz3ms356 KiB
40Hibás válasz14ms1188 KiB
41Hibás válasz14ms1256 KiB
42Hibás válasz14ms1380 KiB
43Hibás válasz14ms1320 KiB
44Hibás válasz17ms1404 KiB
45Hibás válasz17ms1528 KiB