求hack or调试
查看原帖
求hack or调试
514700
MicroSun/fendou楼主2023/6/21 21:24
#include <bits/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
int a[500005],n,m,sum,zero,add;
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>i[a];
	sort(a+1,a+1+n,[](int a,int b){return a>b;});
	for(int i=1;i<=n;i++){
		if(a[i]>=0){
			zero=i;
			sum+=i[a];
		}
	}
	int q,k;
	while(m--){
		cin>>q;
		if(q==1){
			cin>>k;
			add+=k;
			if(k>0){
				for(zero++;zero[a]+add>=0&&zero<=n;zero++)
					sum+=zero[a];
				zero--;
			}
			else if(k<0){
				for(;zero[a]+add<0&&zero>0;zero--)
					sum-=zero[a];
			}
			//cerr<<zero<<' '<<add<<endl;
		}
		else cout<<sum+zero*add<<endl;
	}
    return 0;
}

代码中的 add 用来统计历史加和, sum 用来记录大于等于0的元素之和。

另:关于第一篇题解:

hack数据如下:

3 5
1 3 4
1 -20
1 -12
2
1 100
2

输出应该是:

0
212

吧,但输出第一篇题解输出的是

-31
281

并且对于最后一些测试点会超时。 @Light_az

2023/6/21 21:24
加载中...