求助大佬
查看原帖
求助大佬
569795
MrCR7楼主2022/2/6 21:53

#4 超时了,大佬帮忙看下咋调啊

#include<stdio.h>
int a[100003],b[100003];
bool aa[100003],bb[100003];
void in(int &x){
	char c=getchar(),f=1;
	while ((c<'0'||c>'9')&&c!='-') c=getchar();
	if (c=='-'){
	   f=-1,
	   c=getchar();
	}
	for (x=0;c>='0'&&c<='9';c=getchar())x=x*10+c-'0';
	x*=f;
}
int main(void){
	int n;
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		in(a[i]);
		aa[i]=true;
	}
	for(int i=1;i<=n;i++){
		in(b[i]);
		bb[i]=true;
	}
	int ans=0;
	for(int i=1;i<=n;i++){
		for(int j=i;j<=n;j++){
			if(b[j]>a[i]) break;
			if(b[j]==a[i]){
				if(bb[j]&&aa[i]){
					ans+=a[i];
					bb[j]=aa[i]=false;
					break;
				}
			}
		}
	}
	for(int i=n;i>=1;i--){
		for(int j=i;j>=1;j--){
			if(b[j]<a[i]){
				if(bb[j]&&aa[i]){
					ans+=b[j];
					aa[i]=bb[j]=false;
					break;
				}
			}
			else{
				if(bb[j]&&aa[i]){
					ans+=a[i];
					aa[i]=bb[j]=false;
					break;
				}
			}
		}
	}
	printf("%d\n",ans);
	return 0;
}
2022/2/6 21:53
加载中...