제출 #1337132

#제출 시각아이디문제언어결과실행 시간메모리
1337132khanhphucscratchSails (IOI07_sails)C++20
40 / 100
1095 ms2460 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n; cin>>n;
    vector<pair<int, int>> a(n);
    for(int i = 0; i < n; i++) cin>>a[i].first>>a[i].second;
    sort(a.begin(), a.end());
    map<int, int> f;
    int last = 0, ans = 0;
    for(int i = 0; i < n; i++){
        f[0] += a[i].first - last;
        int num = a[i].second;
        vector<pair<int, int>> change;
        vector<int> del;
        for(pair<int, int> i : f){
            int add = 0;
            if(num < i.second){
                change.push_back({i.first, -num});
                change.push_back({i.first+1, num});
                add = num; num = 0;
            }
            else{
                add = i.second; num -= i.second;
                del.push_back(i.first); change.push_back({i.first+1, i.second});
            }
            ans += i.first * add;
            if(num == 0) break;
        }
        for(int i : del) f.erase(i);
        for(pair<int, int> i : change) f[i.first] += i.second;
        last = a[i].first;
        //cerr<<"A"<<endl;
        //for(pair<int, int> i : f) cerr<<i.first<<" "<<i.second<<endl;
    }
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...