This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,h,k,a[100002],sum,res;
pair <int, int> p[100001];
set <int> s;
void update(int i, int j){
a[i]+=j;
if (a[i])
s.insert(i);
else
s.erase(i);
}
int32_t main(){
ios_base::sync_with_stdio(NULL);cin.tie(nullptr);
cin >> n;
for (int i=1;i<=n;i++)
cin >> p[i].first >> p[i].second;
sort(p+1,p+n+1);
s.insert(1);
s.insert(100001);
for (int i=1;i<=n;i++){
auto [h,k]=p[i];
if (a[h-k+1]){
update(h-k+1,1);
update(h+1,-1);
continue;
}
auto it=s.lower_bound(h-k+1);
int r=*it;
r--;
it--;
int l=*it;
r=min(r,h);
update(l,1);
update(l+r-h+k,-1);
update(h+1,-1);
update(r+1,1);
}
for (int i=1;i<=100000;i++){
sum+=a[i];
res+=sum*(sum-1)/2;
}
cout << res;
}
# | 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... |