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 <iostream>
#include <array>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
constexpr ll VMAX = 1e5 + 1;
array<pair<ll, ll>, VMAX * 4> aint;
pair<ll, ll> combine(pair<ll, ll> a, pair<ll, ll> b) {
if (a.first == b.first) {
a.second += b.second;
return a;
}
return min(a, b);
}
void build(ll nod, ll st, ll dr) {
if (st == dr) {
aint[nod] = {0, 1};
return;
}
ll mij = (st + dr) / 2;
build(nod * 2, st, mij);
build(nod * 2 + 1, mij + 1, dr);
aint[nod] = combine(aint[nod * 2], aint[nod * 2 + 1]);
}
void update(ll x, ll y, ll &cnt, ll val, ll nod, ll st, ll dr) {
if (dr < x || y < st || cnt == 0) return;
if (st == dr) {
aint[nod].first += val;
--cnt;
return;
}
ll mij = (st + dr) / 2;
if (x <= st && dr <= y) {
if (aint[nod].first == aint[nod * 2 + 1].first)
update(x, y, cnt, val, nod * 2 + 1, mij + 1, dr);
if (aint[nod].first == aint[nod * 2].first)
update(x, y, cnt, val, nod * 2, st, mij);
aint[nod] = combine(aint[nod * 2], aint[nod * 2 + 1]);
return;
}
update(x, y, cnt, val, nod * 2 + 1, mij + 1, dr);
update(x, y, cnt, val, nod * 2, st, mij);
aint[nod] = combine(aint[nod * 2], aint[nod * 2 + 1]);
}
ll query(ll nod, ll st, ll dr) {
if (st == dr) {
return aint[nod].first * (aint[nod].first - 1) / 2LL;
}
ll mij = (st + dr) / 2;
ll q_st = query(nod * 2, st, mij);
ll q_dr = query(nod * 2 + 1, mij + 1, dr);
return q_st + q_dr;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
ll n;
cin >> n;
build(1, 1, VMAX - 1);
vector<pair<ll, ll> > v(n);
for (auto &[k, h]: v)
cin >> h >> k;
sort(v.begin(), v.end());
for (auto &[k, h]: v) {
while (k) {
update(1, h, k, 1, 1, 1, VMAX - 1);
}
}
cout << query(1, 1, VMAX - 1);
}
# | 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... |