题目
#include<cstdio>
#include<cstring>
#include<algorithm>
#define mod 1000000007
using namespace std;
long long a[300000],b[300000];
long long maxa[300000];
int main()
{
int n;
while(scanf("%d",&n)==1)
{
memset(maxa,0,sizeof(maxa));
for(int i=1; i<=n; i++)
{
long long aa;
scanf("%lld",&aa);
a[i]=aa-i;
}
for(int i=n; i>=1; i--)
maxa[i]=max(maxa[i+1],a[i]);
for(int i=1; i<=n; i++)
{
scanf("%lld",&b[i]);
}
sort(b+1,b+n+1);
long long ans=0;
ans+=maxa[b[1]];
ans%=mod;
long long t=maxa[b[1]]-n-1;
for(int i=2; i<=n; i++)
{
maxa[b[i]]=max(maxa[b[i]],t);
ans+=maxa[b[i]];
ans%=mod;
t=max(t,maxa[b[i]]-n-i);
}
printf("%lld\n",ans);
}
}