QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#744870 | #9528. New Energy Vehicle | ssx | WA | 2ms | 9940kb | C++20 | 2.2kb | 2024-11-14 00:07:40 | 2024-11-14 00:07:41 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define pll pair<ll, ll>
#define ll long long
const int mod = 1e9 + 7;
const int N = 3e5 + 50;
struct Node
{
ll a, b, c;
};
struct cmp
{
bool operator () (const Node& a, const Node& b)
{
return a.a > b.a;
}
};
vector<ll> e[N];
ll tot[N], a[N], st[N], x[N], t[N], s[N];
ll n, m;
void solve()
{
priority_queue<Node, vector<Node>, cmp> q;
ll ans = 0;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
s[i] = a[i];
}
for (int i = 1; i <= m; i++) cin >> x[i] >> t[i];
for (int i = 1; i <= m; i++)
{
e[t[i]].push_back(x[i]);
if (st[t[i]] == 0)
{
st[t[i]] = 1;
q.push({x[i], t[i], tot[t[i]]});
//tot[t[i]] ++;
}
}
for (int i = 1; i <= n; i++)
{
if (st[i] == 0) q.push({(ll)1e18, i, 0});
}
for (int i = 1; i <= m; i++)
{
ll tx = x[i] - x[i - 1];
while (tx > 0)
{
if (q.size() == 0) break;
auto it = q.top();
q.pop();
if (it.c != tot[it.b]) continue;
//cout << it.b << '\n';
if (tx - s[it.b] > 0)
{
ans += s[it.b];
tx -= s[it.b];
s[it.b] = 0;
}
else
{
ans += tx;
s[it.b] -= tx;
tx = 0;
if (s[it.b] > 0) q.push({it.a, it.b, it.c});
}
}
if (q.size() == 0) break;
tot[t[i]] ++;
s[t[i]] = a[i];
if (tot[t[i]] < e[t[i]].size()) q.push({e[t[i]][tot[t[i]]], t[i], tot[t[i]]});
else q.push({(ll)1e18, t[i], tot[t[i]]});
}
//cout << ans << '\n';
if (q.size() > 0)
{
for (int i = 1; i <= n; i++) ans += s[i];
}
cout << ans << '\n';
for (int i = 0; i <= n + 10; i++)
{
e[i].clear(); tot[i] = 0;
st[i] = 0;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
ll T = 1;
cin >> T;
while (T --)
{
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 9768kb
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: 0ms
memory: 9940kb
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:
6 11 4 11 999999999 1000000000
result:
wrong answer 1st lines differ - expected: '9', found: '6'