社区讨论
52分求条,玄关
P11214【MX-J8-T2】黑洞参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @m55b2rz1
- 此快照首次捕获于
- 2024/12/26 20:34 去年
- 此快照最后确认于
- 2024/12/27 14:21 去年
CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;
struct MA{
int num;
bool t;
};
int n;
MA ma[400005];
long long fastpow(long long x,long long m){
long long res=1;
while(m>0){
if(m%2==1)res=res*x;
x=x*x;
m=m/2;
}
return res;
}
bool cmp(MA x,MA y){
return x.num<y.num;
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++)cin>>ma[i].num;
for(int i=n+1;i<=2*n;i++){
cin>>ma[i].num;
ma[i-n].num-=ma[i].num;
ma[i].num--;
if(ma[i].num<ma[i-n].num){
ma[i-n].t=1;
}
else if(ma[i].num==ma[i-n].num){
ma[i].t=1,ma[i-n].t=1;
}
else ma[i].t=1;
}
sort(ma+1,ma+2*n+1,cmp);
long long times=fastpow(2,n);
// cout<<times<<endl;
long long ans=1;
for(int i=1;i<=2*n;i++){
times=times/2;
if(times==0){
ans+=ma[i].num;
break;
}
if(ma[i].t==0){
// cout<<ma[i].num<<" "<<times<<" ";
ans+=ma[i].num*times;
// cout<<ans<<endl;
}
if(ma[i].t==1){
ans+=ma[i].num*times*2;
// cout<<ans<<" ";
break;
}
ans=ans%1000000007;
}
// cout<<endl;
cout<<ans%1000000007;
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...