QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#695833 | #9528. New Energy Vehicle | Jiangnan01 | WA | 0ms | 3628kb | C++20 | 2.0kb | 2024-10-31 20:53:31 | 2024-10-31 20:53:32 |
Judging History
answer
#include <bits/stdc++.h>
#include<iostream>
using namespace std;
#define fs first
#define endl '\n'
#define sc second
#define pb push_back
#define int long long
#define itn int
#define ull unsigned long long
#define bit(x) (1ll << (x))
#define sz(x) (int)(x).size()
#define al(x) (x).begin(),(x).end()
#define all(x) (x).begin() + 1,(x).end()
using ll = long long;
using VI = vector <int>;
using VS = vector <string>;
using PII = pair <int, int>;
using I64 = unsigned long long;
using VVI = vector < vector<int> >;
const int INF = 1e10;
const int inf=1e9+10;
const int maxn=1e6+5;
const int mod=998244353;
const double pi = acos(-1.0);
const double eps=1e-12;
void solve()
{
int n,m;cin>>n>>m;
VI a(n+1),tmp(n+1);
vector<int> f(n+1);
map<int,set<int>> mp1;
for(int i=1;i<=n;i++) cin>>a[i],tmp[i]=a[i];
vector<PII> v(m+1);
map<int,int> mp;
for(int i=1;i<=m;i++){
cin>>v[i].fs>>v[i].sc;
mp[v[i].sc]=1;
mp1[v[i].second].insert(v[i].first);
}
sort(all(v));
priority_queue<PII,vector<PII>,greater<PII> >q;
set<pair<int,int>> st;
for(int i=1;i<=m;i++)
q.push(v[i]);
for(int i=1;i<=n;i++){
mp1[i].insert(INF);
if(mp.count(i)) continue;
q.push({INF,i});
}
int pos=0;
for(int i=0;i<m;i++)
{
int d=v[i+1].fs-v[i].fs;
pos+=d;
while(!q.empty()){
auto u=q.top();q.pop();
if(d<=tmp[u.sc]){
tmp[u.sc]-=d;d=0;
q.push(u);
break;
}
d-=tmp[u.sc];tmp[u.sc]=0;
}
auto it = mp1[v[i+1].second].lower_bound(v[i+1].first);
q.push({*(++it),v[i+1].sc});
if(d>0){
cout<<pos-d<<endl;return ;
}
tmp[v[i+1].second]=a[v[i+1].second];
//st.insert({INF,v[i+1].second});
}
int res=0;
for(int i=1;i<=n;i++) res+=tmp[i];
cout<<pos+res<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T = 1;
cout << fixed << setprecision(15);
cin >> T;
while(T--){
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 0ms
memory: 3628kb
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'