QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#684778#9528. New Energy Vehicleluohui468WA 1ms5756kbC++141.8kb2024-10-28 15:49:132024-10-28 15:49:14

Judging History

This is the latest submission verdict.

  • [2024-10-28 15:49:14]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 5756kb
  • [2024-10-28 15:49:13]
  • Submitted

answer

#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<queue>
#include<map>
#include<set>

#define int long long 
#define endl '\n'

using namespace std;
const int N = 1e5 + 100;
int n, m;
priority_queue<int,vector<int>, greater<int>>p, q;
int a[N], b[N], en[N];
int x[N], y[N];
void solve() {
	cin >> n >> m;
	int cnum = 0, mcnum = 0;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
		b[i] = a[i];
		en[i] = 0;
	}
	for(int i = 1; i <= m; i++){
		cin >> x[i] >> y[i];
		en[y[i]] = i;
		q.push(i);
	}
	for(int i = 1; i <= n; i++){
		if(en[i]){
			cnum += a[i];
		}else{
			mcnum += a[i];
		}
	}	
	x[0] = 0;
	int ans = 0;
	for(int i = 1; i <= m; i++){
		int dis = x[i] - x[i - 1];
		if(p.size()){
			if(p.top() == i){
				q.push(i);
				p.pop();
			}
		}
		if(cnum + mcnum < dis){
			break;
		}
		while(q.size()){
			int t = q.top();
			int t1 = y[t];
			if(a[t1] == 0){
				p.push(t);
			}
			if(dis >= a[t1]){
				dis -= a[t1];
				cnum -= a[t1];
				a[t1] = 0;
			}
			else{
				//cout << a[t1] << " " << dis << endl;
				a[t1] -= dis;
				cnum -= dis;
				dis = 0;
				break;
			}
			q.pop();
		}
		if(q.size() && q.top() == i){
			q.pop();
		}
		//cout << i << ": " << dis << endl;
		if(dis){
			mcnum -= dis;
		}
		int t1 = y[i];
		if(i == en[y[i]]){
			mcnum += b[t1];
			//cout << cnum << " " << a[t1] << endl;
			cnum -= a[t1];
			
		}
		else{
			cnum += (b[t1] - a[t1]);
		}
		//cout << mcnum << " " << cnum << endl;
		ans += x[i] - x[i - 1];
		a[t1] = b[t1];
		//cout << t1 << " " << a[t1] << endl;
	}
	//cout << mcnum << " " << cnum <<endl;
	cout << ans + mcnum + cnum << endl; 
}

signed main() {
	cin.tie(nullptr) -> sync_with_stdio(false);
	int T = 1;
	cin >> T;
	while(T --) {
		solve();
	}	
	return 0;
}

詳細信息

Test #1:

score: 100
Accepted
time: 1ms
memory: 5756kb

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: 5688kb

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
4
9
999999999
2000000000

result:

wrong answer 4th lines differ - expected: '11', found: '9'