QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#752710 | #9528. New Energy Vehicle | Tmonkey | WA | 4ms | 12028kb | C++20 | 2.6kb | 2024-11-16 09:24:44 | 2024-11-16 09:24:45 |
Judging History
answer
#include <bits/stdc++.h>
#define int long long
using namespace std;
#define YES "YES"
#define NO "NO"
#define all(a) a.begin(), a.end()
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int, int> pii;
const double eps = 1e-9;
const int N = 2e6 + 10;
const int M = 2e5 + 10;
const int INF = 1e16 + 100;
const int mod = 998244353;
const int base = 23333;
mt19937 rng(std::chrono::steady_clock::now().time_since_epoch().count());
int mx[N], now[N];
int jl[N], id[N];
pii j[N];
vector<int> e[N];
void solve()
{
int n, m;
cin >> n >> m;
vector<int> flag(n + 5);
for (int i = 1; i <= n; i++)
{
cin >> mx[i];
now[i] = mx[i];
}
set<pii> q;
for (int i = 1; i <= m; i++)
{
cin >> jl[i] >> id[i];
q.insert({i, id[i]});
e[id[i]].push_back(i);
flag[id[i]]++;
}
int pre = 0, sy = 0, ans = 0;
for (int i = 1; i <= n; i++)
{
if (!flag[i])
sy += now[i];
}
for (int i = 1; i <= m; i++)
{
int ned = jl[i] - pre;
while (!q.empty() && ned > 0)
{
auto [u, v] = *(q.begin());
// cout << u << ' ' << v << '\n';
q.erase(q.begin());
if (now[v] < ned)
{
ans += now[v];
ned -= now[v];
now[v] = 0;
}
else
{
ans += ned;
now[v] -= ned;
ned = 0;
if (i == e[id[i]].back())
sy += mx[id[i]];
else
{
auto it = upper_bound(all(e[id[i]]), i);
now[id[i]] = mx[id[i]];
q.insert({*it, id[i]});
}
q.insert({u, v});
}
}
if (ned > sy)
{
ans += sy;
sy = 0;
break;
}
else if (ned > 0)
{
ans += ned;
sy -= ned;
auto it = upper_bound(all(e[id[i]]), i);
if (it == e[id[i]].end())
sy += mx[id[i]];
else
{
now[id[i]] = mx[id[i]];
q.insert({*it, id[i]});
}
}
pre = jl[i];
}
ans += sy;
cout << ans << '\n';
for (int i = 1; i <= m; i++)
e[id[i]].clear();
}
signed main()
{
// ios::sync_with_stdio(false);
// cin.tie(0);
// cout.tie(0);
int t = 1;
cin >> t;
while (t--)
solve();
return 0;
}
詳細信息
Test #1:
score: 100
Accepted
time: 4ms
memory: 11732kb
input:
2 3 1 3 3 3 8 1 2 2 5 2 1 2 2 1
output:
12 9
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 4ms
memory: 12028kb
input:
6 3 2 2 2 2 6 1 7 1 2 2 3 3 2 1 6 2 2 3 2 2 5 1 7 2 9 1 2 2 3 3 2 1 6 2 1 1 999999999 1000000000 1 1 1 1000000000 1000000000 1
output:
9 12 4 12 999999999 2000000000
result:
wrong answer 2nd lines differ - expected: '11', found: '12'