#include <iostream>
#include <algorithm>
#include <vector>
const int MAXN = 1e5 + 10;
const int INF = 1e9 + 10;
int n;
long long ans = 0;
struct Mast
{
int h;
int k;
};
Mast mast[MAXN];
int cnt[MAXN];
void solve()
{
std::cin >> n;
for(int i = 1 ; i <= n ; ++i)
{
std::cin >> mast[i].h >> mast[i].k;
}
std::sort(mast + 1, mast + n + 1, [&](const Mast &a, const Mast &b)
{
return a.h < b.h;
});
for(int i = 1 ; i <= n ; ++i)
{
auto [h, k] = mast[i];
std::vector<bool> used(h + 1, false);
for(int j = 1 ; j <= k ; ++j)
{
int minLevel, minLevelCnt = INF;
for(int level = 1 ; level <= h ; ++level)
{
if(used[level]) continue;
if(cnt[level] < minLevelCnt)
{
minLevel = level;
minLevelCnt = cnt[level];
}
}
ans += minLevelCnt;
cnt[minLevel] += 1;
used[minLevel] = true;
}
}
std::cout << ans << "\n";
}
void fastIO()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(NULL);
std::cout.tie(NULL);
}
int main()
{
fastIO();
solve();
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... |