#include <bits/stdc++.h>
#define int long long
using namespace std;
const int Nmax=1e5+5;
set<int> poz[Nmax];
pair<int,int> a[Nmax];
signed main()
{
int n;
cin>>n;
int maxi=0;
for(int i=1;i<=n;i++) poz[0].insert(i);
for(int i=1;i<=n;i++)
{
cin>>a[i].first>>a[i].second;
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
int h=a[i].first,k=a[i].second;
vector<pair<int,int>> chpoz;
for(int cnt=0;cnt<=maxi;cnt++)
{
auto it=poz[cnt].upper_bound(h);
if(it==poz[cnt].begin()) continue;
it--;
for(it;true;it--)
{
int x=(*it);
chpoz.push_back({x,cnt});
k--;
if(k==0 || it==poz[cnt].begin()) break;
}
if(k==0) break;
}
for(auto [x,cnt]:chpoz)
{
poz[cnt].erase(poz[cnt].find(x));
poz[cnt+1].insert(x);
maxi=max(maxi,cnt+1);
}
}
int ans=0;
for(int cnt=0;cnt<=maxi;cnt++)
{
int nums=poz[cnt].size();
ans+=nums*cnt*(cnt-1)/2;
}
cout<<ans<<'\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |