QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#743598#9528. New Energy VehicleabovecloudRE 0ms3504kbC++141.4kb2024-11-13 19:36:112024-11-13 19:36:11

Judging History

This is the latest submission verdict.

  • [2024-11-13 19:36:11]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 3504kb
  • [2024-11-13 19:36:11]
  • Submitted

answer

/*Time:2024-11-13 15:52:45*/
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define second se
#define first fi
#define vi vector<int>
#define vvi vector<vi>
#define all(v) v.begin(),v.end()
const int MOD = (int) 1e9 + 7;
const int INF = INT_MAX;
// const int MAXN = 


void solve() {
	int n,m;
	cin >> n >> m;
	vi v(n+1),a(n+1),dis(n+1),b(n+1),able;
	for(int i = 1;i<=n;i++){
		cin >> v[i];
		a[i] = v[i];
	}
	for(int i = 1;i<=m;i++){
		cin >> dis[i] >> b[i];
		able.push_back(b[i]);
	}
	for(int i=1;i<=n;i++){
		able.push_back(i);
	}
	int M = able.size();
	vi cnt(n+1,0);
	int now = 0,j = -1;
	int sp = 0;
	for(int i = 1;i<=m;i++){
		// while((j==-1 || a[able[j]] == 0) && j<M){
		// 	j++;
		// 	cnt[able[j]]++;
		// }
		// if(j==M)break;
		j=max(j,i);
		if(j==M)break;
		while(now < dis[i]){
			while((j==-1 || a[able[j]] == 0) && j<M){
				j++;
				// cnt[able[j]]++;
			}
			if(j==M)break;
			int t = min(dis[i]-now,a[able[j]]);
			a[able[j]] -= t;
			now += t;
		}

		if(now>=dis[i])a[b[i]] = v[b[i]];
		if(j==M)break;
		// cout << now << endl;
	}
	for(int i=1;i<=n;i++){
		now+=a[i];
	}
	cout << now << endl;
}

int32_t main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    cout << fixed << setprecision(12);
    int T = 1;
    cin >> T;
    while (T--)solve();
}

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3504kb

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
Runtime Error

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:

8
9

result: