Submission #776161

#TimeUsernameProblemLanguageResultExecution timeMemory
776161Ahmed57Sails (IOI07_sails)C++17
25 / 100
1083 ms4632 KiB
#include <bits/stdc++.h>

using namespace std;

int main(){
    int n;
    cin>>n;
    vector<int> v[100001];
    for(int i = 0;i<n;i++){
        int a,b;cin>>a>>b;
        v[a].push_back(b);
    }
    long long l = 1 , r = 100000 , ans = -1;
    while(l<=r){
        int mid = (l+r)/2;
        multiset<int> s;
        long long all = 0;
        priority_queue<int> ve;
        for(int i = 100000;i>=1;i--){
            for(auto j:v[i]){
                ve.push(j);
            }
            long long sz = min(int(ve.size()),mid);
            all+=(sz*(sz-1))/2;
            vector<int> xd;
            while(sz--){
                xd.push_back(ve.top()-1);
                ve.pop();
            }
            for(auto j:xd){if(j)ve.push(j);}
        }
        if(ve.empty()){
            ans = all;
            r = mid-1;
        }else{
            l = mid+1;
        }
    }
    cout<<ans<<endl;
}
#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...