제출 #1331008

#제출 시각아이디문제언어결과실행 시간메모리
1331008boclobanchatSails (IOI07_sails)C++20
55 / 100
14 ms3396 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+5;
long long pref[MAXN],pf[MAXN],sum[MAXN];
pair<int,int> A[MAXN];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin>>n;
    long long s=0;
    for(int i=1;i<=n;i++)
	{
		cin>>A[i].first>>A[i].second;
		pf[A[i].first]--,pf[A[i].first-A[i].second]++;
		pref[A[i].first]--,pref[0]++,s+=A[i].second;
	}
    for(int i=1;i<1e5;i++) pref[i]+=pref[i-1],pf[i]+=pf[i-1];
    for(int i=0;i<1e5;i++)
    {
    	sum[i]=pf[i]*(pf[i]-1)/2;
    	if(i) pf[i]+=pf[i-1],sum[i]+=sum[i-1];
	}
	long long ans=1e18;
	for(int i=0;i<1e5;i++)
	{
		long long t=sum[99999]-sum[i],res=pf[i];
		t+=(res/(i+1))*(res/(i+1)-1)/2*(i+1)+(res%(i+1))*(res/(i+1));
		if(res/(i+1)<=pref[i]&&(!(res%(i+1))||res/(i+1)+1<=pref[res%(i+1)-1])) ans=min(ans,t);
	}
	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...