QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#726473 | #9528. New Energy Vehicle | Exile_Code | WA | 0ms | 3552kb | C++20 | 2.1kb | 2024-11-09 01:16:07 | 2024-11-09 01:16:07 |
Judging History
answer
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
#include <set>
#include <map>
#include <cstdio>
#include <cstring>
#include <queue>
#include <cstdlib>
#include <algorithm>
#include <list>
#include <string>
#include <cmath>
#include <bitset>
#include <stack>
#include <math.h>
#include <functional>
#include <unordered_map>
#include <unordered_set>
#include <numeric>
#include <cstdint>
#include <iomanip>
using namespace std;
#define int ll
#define ll long long
#define pii pair<int,int>
#define endl '\n'
#define vv vector
#define all(x) x.begin()+1,x.end()
#define cy cout<<"Yes"<<endl
#define cn cout<<"No"<<endl;
#define ft first
#define sd second
map<int, vv<int>>mp;
struct nd {
int v, id;
bool operator<(const nd b)const {
return mp[id].back() > mp[b.id].back();
}
};
void solve() {
int n, m; cin >> n >> m;
mp.clear();
vv<int>dian(n + 1);
for (int i = 1; i <= n; i++) {
cin >> dian[i];
}
vv<pii>pos(m + 1);
for (int i = 1; i <= m; i++) {
int x, p; cin >> x >> p;
mp[p].push_back(x);
pos[i] = { x,p };
}
for(int i=1;i<=n;i++)
mp[i].push_back(1e9 + 10);
for (auto &a : mp) {
reverse(a.second.begin(), a.second.end());
}
priority_queue<nd, vv<nd>>q;
for (int i = 1; i <= n; i++) {
q.push({ dian[i],i });
}
int sum = 0;
pos[0] = { 0,0 };
vv<int>use = dian;
for (int i = 1; i <= m; i++) {
int dx = pos[i].first - pos[i - 1].first;
while (q.size()&&dx) {
auto now = q.top(); q.pop();
if (now.v != use[now.id])
continue;
if (now.v > dx) {
use[now.id] -= dx;
sum += dx;
q.push({ use[now.id],now.id });
dx = 0;
break;
}
else {
use[now.id] = 0;
dx -= now.v;
sum += now.v;
}
}
if (dx)
break;
use[pos[i].second] = dian[pos[i].second];
q.push({ dian[pos[i].second],pos[i].second });
}
for (int i = 1; i <= n; i++)
sum += use[i];
cout << sum << endl;
}
signed main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll _ = 1;
cin >> _;
while (_--)
solve();
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3552kb
input:
2 3 1 3 3 3 8 1 2 2 5 2 1 2 2 1
output:
12 8
result:
wrong answer 2nd lines differ - expected: '9', found: '8'