Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
37691 hi_hi 【J】T2 C++ 运行超时 52 2000 MS 20564 KB 1094 2025-04-30 20:33:10

Tests(13/25):


#include<bits/stdc++.h> using namespace std; long long n,m[200005],a[200005],ans,mod=1000000007,h[200005],bs[200005]; struct sss{ long long l,r; }p[200005]; bool cmp(sss x,sss y){ return x.l<y.l; } inline long long dfs(long long now,long long k,long long op){ if(now==n && op==0)return min(k,p[now].l); if(now==n)return min(k,p[now].r); if(k<h[now]){ if(op==0){ return (min(k,p[now].l)*bs[n-now])%mod; } else return (min(k,p[now].r)*bs[n-now])%mod; } return (dfs(now+1,min(k,p[now+1].l),0)+dfs(now+1,min(k,p[now+1].r),1))%mod; } int main(){ scanf("%lld",&n); for(int i=1;i<=n;i++){ scanf("%lld",&m[i]); } bs[0]=1; for(int i=1;i<=n;i++){ scanf("%lld",&a[i]); p[i]=((sss){a[i]-1,m[i]-a[i]}); bs[i]=bs[i-1]*2; bs[i]%=mod; } sort(p+1,p+n+1,cmp); h[n+1]=0x3f3f3f3f3f3f3f3f; for(int i=n;i>=1;i--){ h[i]=min(h[i+1],min(p[i].l,p[i].r)); } ans=dfs(1,p[1].l,0)+dfs(1,p[1].r,1)+1; printf("%lld",ans%mod); }


测评信息: