QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#710525 | #9528. New Energy Vehicle | youzi | WA | 1ms | 7940kb | C++23 | 996b | 2024-11-04 20:15:01 | 2024-11-04 20:15:02 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
#define int long long
#define x first
#define y second
int a[N];
int b[N];
int c[N];
void slove()
{
int ans = 0;
int s = 0;
int ss = 0;
int n , m;
cin >> n >> m;
map<int ,int> k;
for(int i = 1 ; i <= n ; ++ i)
{
cin >> a[i];
s += a[i];
ss += a[i];
}
for(int i = 1 ; i <= m ; ++ i)
{
cin >> b[i] >> c[i];
}
set<pair<int ,int>>p;
for(int i = 1 ; i <= m ; ++ i)
{
if(ss < b[i]) break;
p.insert({b[i - 1] + 1 , b[i]});
int st = k[c[i]] + 1;
int ma = a[c[i]];
while(p.size())
{
auto kk = *p.lower_bound({st , 0});
p.erase(kk);
int l = kk.x;
int t = kk.y;
int dis = t - l + 1;
if(ma < dis)
{
s += ma;
p.insert({l + ma , t});
break;
}
s += dis;
ma -= dis;
if(t == b[i]) break;
}
k[c[i]] = i;
}
cout << s << endl;
}
signed main()
{
int t = 1;
cin >> t;
while(t --)
{
slove();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 7940kb
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: 5592kb
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 11 4 11 999999999 2000000000
result:
wrong answer 1st lines differ - expected: '9', found: '8'