(玄关)正解28pts求条
查看原帖
(玄关)正解28pts求条
573977
Zcras楼主2024/10/20 20:22

rt,用的是直播讲的正解,样例全过,提供小hack样例也关

#include<bits/stdc++.h>
#define x first
#define y second
#define int long long
using namespace std;
const int N=2e5+10,3MOD=1e9+7;
int n,a[N],b[N],ans;
bool vis[N];
pair<int,int>c[2*N];
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>b[i];
	}
	for(int i=1;i<=n;i++){
		cin>>a[i];
		c[i].x=b[i]-a[i],c[i].y=i;
		c[i+n].x=a[i]-1,c[i+n].y=i;
	}
	sort(c+1,c+1+n*2);
	int pow2=1;
	for(int i=1;i<=n;i++){
		pow2*=2;
	}
	for(int i=1;i<=2*n;i++){
		pow2/=2;
		if(vis[c[i].y]){
			ans=(ans+c[i].x*(pow2+1)%MOD)%MOD;
			break;
		}else{
			vis[c[i].y]=1;
		}
		ans=(ans+c[i].x*(pow2)%MOD)%MOD;
	//	cout<<c[i].y<<" "<<c[i].x<<" "<<pow2<<endl;
	}
	cout<<(ans+1)%MOD<<endl;
	return 0;
}
2024/10/20 20:22
加载中...