Submission #1331011

#TimeUsernameProblemLanguageResultExecution timeMemory
1331011boclobanchatSails (IOI07_sails)C++20
55 / 100
14 ms3456 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];
	}
	int r=99999;
	long long ans=1e18;
	for(int i=1;i<=n;i++)
	{
		while(r>0&&pref[r]<i) r--;
		if(pf[r]<=1LL*i*(r+1))
		{
			long long t=sum[99999]-sum[r],res=pf[r];
			t+=(res/(r+1))*(res/(r+1)-1)/2*(r+1)+(res%(r+1))*(res/(r+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...