QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#677504#9528. New Energy Vehicleucup-team3677#WA 1ms9764kbC++201.3kb2024-10-26 12:24:142024-10-26 12:24:14

Judging History

This is the latest submission verdict.

  • [2024-10-26 12:24:14]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 9764kb
  • [2024-10-26 12:24:14]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1000010,mod=1e9+7,eps=1e-9;
int a[N],x[N],t[N],b[N];

void solve(){
	
		int n,m,w,l,r;
		cin>>n>>m;
		int sum=0;
		set<int>s;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			b[i]=a[i];
			s.insert(i);
			sum+=a[i];
		}
		std::vector<int> v;
		for(int i=1;i<=m;i++){
			cin>>x[i]>>t[i];
			v.push_back(t[i]);
		}
		int dis=0;
		int now=0;
		for(int i=1;i<=m;i++){

			if(now!=v.size()){
				while(now<v.size() && dis<x[i]){
					// int tmp=min(x[i]-dis,a[v[now]]);
					dis+=a[v[now]];
					a[v[now]]=0;
					//当前电池用完,从s删除
					if(s.count(v[now])){
						s.erase(v[now]);
					}
					now++;
				}

			}
			// cout<<dis<<"\n";
			//顺序外的
			while(s.size() && dis<x[i]){
				auto t=s.begin();
				int tmp=min(a[*t],x[i]-dis);
				dis+=tmp;
				a[*t]-=tmp;
					//当前电池用完,从s删除

				if(!a[*t])s.erase(t);
			}
			// cout<<dis<<"\n";
			if(dis>=x[i]){
				a[t[i]]=b[t[i]];
				s.insert(t[i]);
			}else{
				cout<<dis<<"\n";
				return;
			}
		}

		for(int i=1;i<=n;i++){
			dis+=a[i];
		}
		cout<<max(sum,dis)<<"\n";

}  

signed main(){

  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int t=1;
  cin>>t;
  while(t--){
    solve();
  }
}

	

详细

Test #1:

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

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

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

result:

wrong answer 2nd lines differ - expected: '11', found: '12'