大佬求调!!!
  • 板块灌水区
  • 楼主我是歌者
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/10/17 17:14
  • 上次更新2024/10/17 19:38:43
查看原帖
大佬求调!!!
566190
我是歌者楼主2024/10/17 17:14

P9742

#include<bits/stdc++.h>
using namespace std;
struct p{
	int a;
	int c;
}arr[1000010];
int t,n;
bool cmp(p x,p y){
	return x.c>y.c;
}
int main(){
	cin>>t;
	while(t--){
	    memset(arr,0,sizeof(arr));
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>arr[i].a;
		} 
		for(int i=1;i<=n;i++){
			cin>>arr[i].c;
		}
		int flag1=0,flag2=0;
		for(int i=1;i<=n;i++){
			if(arr[i].c<0){
				flag1=i;
				break;
			}
		}
		for(int i=n;i>=1;i--){
			if(arr[i].c>0){
				flag2=i;
				break;
			}
		} 
		long long int sum=0,mx=0,ans=0;
		for(int i=1;i<flag1;i++)sum+=arr[i].c;
		for(int i=1;i<flag1;i++)sum-=arr[i].c,mx=max(mx,sum-arr[i].c);
		ans+=mx;
		sum=0,mx=0;
		for(int i=n;i>flag2;i--)sum-=arr[i].c;
		for(int i=n;i>flag2;i--)sum+=arr[i].c,mx=max(mx,sum+arr[i].c);//q[flag2]-q[i]+arr[i].c;
		ans+=mx;
		for(int i=flag1;i<=flag2;i++){
			ans+=abs(arr[i].c);
		}
		cout<<ans<<endl;
		ans++;
	}
	return 0;
}

60分

2024/10/17 17:14
加载中...