#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 100;
set <pair <int, int>> s;
int a[maxn], b[maxn], d[maxn], n;
void push(int i)
{
int cur = d[i];
if (cur - 1)
{
cur -= cur % 2;
}
s.erase({d[i], i});
d[i] -= cur;
s.insert({d[i], i});
int j = i + 1;
if (j == n + 1)
{
j = 1;
}
s.erase({d[j], j});
d[j] += cur / 2;
s.insert({d[j], j});
return ;
}
int main()
{
cin >> n;
for (int i = 1;i <= n;i++)
{
cin >> a[i] >> b[i];
d[i] = a[i] - b[i];
s.insert({d[i], i});
}
while ((*(--s.end())).first > 0)
{
push((*(--s.end())).second);
}
for (int i = 1;i <= n;i++)
{
if (d[i] < 0)
{
cout << "No";
return 0;
}
}
cout << "Yes";
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |