QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#694279 | #9528. New Energy Vehicle | Xwc | WA | 1ms | 7888kb | C++14 | 2.0kb | 2024-10-31 17:38:49 | 2024-10-31 17:38:50 |
Judging History
answer
#include <bits/stdc++.h>
#define fastio ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
typedef double ff;
typedef long long int ll;
typedef unsigned long long int ull;
using namespace std;
typedef pair<ll, ll> pii;
const int N = 2e5 + 10, M = 1e7, mod = 998244353;
ll n, m, a[N], b[N];
int nxt[N], x[N], t[N], suf[N];
bool vis[N], have[N];
void solve()
{
cin >> n >> m;
// init();
for(int i = 1; i <= n; i ++ ) {
cin >> a[i];
b[i] = a[i];
vis[i] = false;
have[i] = false;
suf[i] = m + 1;
}
for(int i = 1; i <= m; i ++ ) {
cin >> x[i] >> t[i];
vis[t[i]] = true;
}
for(int i = m; i >= 1; i -- ) {
nxt[i] = suf[t[i]];
suf[t[i]] = i;
}
// for(int i = 1; i <= m; i ++ ) {
// cout << t[i] << ' ' << nxt[i] << '\n';
// }
ll sum = 0;
for(int i = 1; i <= n; i ++ ) {
if(!vis[i]) sum += a[i];
}
priority_queue<int, vector<int>, greater<int> > q;
for(int i = 1; i <= m; i ++ ) {
if(have[t[i]]) continue;
q.push(i);
have[t[i]] = true;
}
for(int i = 1; i <= m; i ++ ) {
// now -> x[i]; t[i]
ll dist = x[i] - x[i - 1];
while(q.size()) {
auto pos = q.top();
q.pop();
int mn = min(dist, b[pos]);
dist -= mn;
b[pos] -= mn;
// cout << i << ' ' << dist << '\n';
if(dist <= 0) {
if(pos != i) {
q.push(pos);
}
break;
}
}
if(dist <= 0) {
b[t[i]] = a[t[i]];
if(nxt[i] != m + 1) {
q.push(nxt[i]);
} else {
// cout << i << '\n';
sum += a[t[i]];
}
} else {
if(sum >= dist) {
// cout << '?' << nxt[t[i]] << '\n';
sum -= dist;
b[t[i]] = a[t[i]];
if(nxt[i] != m + 1) {
q.push(nxt[i]);
} else {
// cout << 1 << '\n';
sum += a[t[i]];
}
} else {
cout << x[i - 1] + sum << '\n';
return ;
}
}
}
// cout << x[m] << ' ' << sum << '\n';
cout << x[m] + sum << '\n';
}
int main()
{
fastio;
int _ = 1;
cin >> _;
while( _ -- ) solve();
}
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 7888kb
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: 1ms
memory: 7672kb
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 11 0 11 0 2000000000
result:
wrong answer 3rd lines differ - expected: '4', found: '0'