제출 #1351054

#제출 시각아이디문제언어결과실행 시간메모리
1351054WarinchaiSails (IOI07_sails)C++20
80 / 100
9 ms3536 KiB
#include<bits/stdc++.h>
#define int long long
using namespace std;

int h[100005];
int k[100005];
int sum[100005];
int val[100005];
int lim[100005];

int32_t main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    //cerr<<"work\n";
    int n;cin>>n;
    int mx=0;
    int left=0;
    for(int i=1;i<=n;i++){
        cin>>h[i]>>k[i];
        left+=k[i];
        val[1]++;
        val[h[i]+1]--;
        mx=max(mx,h[i]);
        lim[h[i]]++;
        lim[h[i]-k[i]]--;
    }
    for(int i=1;i<=mx;i++)val[i]+=val[i-1];
    for(int i=mx;i>=1;i--)lim[i]+=lim[i+1];
    for(int i=mx;i>=1;i--)lim[i]+=lim[i+1];
    int ans=0;
    int res=0;
    for(int i=mx;i>=1;i--){
        int want=left/i;
        int use=min({val[i],want,lim[i]-res});
        //cerr<<"i:"<<i<<" "<<use<<"\n";
        left-=use;
        res+=use;
        ans+=(use*(use-1))/2;
    }
    assert(left==0);
    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...