QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#678390#9528. New Energy Vehicleucup-team5052#WA 1ms5656kbC++14960b2024-10-26 14:47:122024-10-26 14:47:13

Judging History

This is the latest submission verdict.

  • [2024-10-26 14:47:13]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 5656kb
  • [2024-10-26 14:47:12]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

const int N = 100005;
int n, m;
long long a[N], x[N], t[N], sa;

inline bool Chk(long long mid) {
	long long sum = 0;
	int s = m;
	while (s >= 1 && x[s] > mid) s--;
	long long curp = mid;
	//cout << "mid = " << mid << endl;
	for (int i = s;i >= 0;i--) {
		if (sum + curp - x[i] > sa) return 0;
		//cout << i << " " << sum << endl;
		sum += curp - x[i];
		curp = x[i];
		if (i != 0) sum -= min(sum, a[t[i]]);
	}
	return 1;
}

int main() {
	std::ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	int tt;
	cin >> tt;
	while (tt--) {
		cin >> n >> m;
		for (int i = 1;i <= n;i++) cin >> a[i];
		for (int i = 1;i <= m;i++) cin >> x[i] >> t[i];
		x[0] = 0;
		sa = 0;
		for (int i = 1;i <= n;i++) sa += a[i];
		long long l = 0, r = 1e18;
		while (l < r - 1) {
			long long mid = l + r >> 1;
			if (Chk(mid)) l = mid;
			else r = mid;
		}
		cout << l << endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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

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:

10
11
4
11
999999999
2000000000

result:

wrong answer 1st lines differ - expected: '9', found: '10'