我承认这题写复杂了 用到了deque
#include<bits/stdc++.h>
typedef long long ll;
const int mod=1e9+7;
using namespace std;
int main()
{
int n,wa,wb;
cin>>n>>wa;
deque <int> a(wa);
for(int i=0;i<wa;i++)
cin>>a[i];
cin>>wb;
deque <int> b(wb);
for(int i=0;i<wb;i++)
cin>>b[i];
ll diff=0;
ll rest=a.front(); //记录此时元素
int t=wa-wb; //计算a多出来的部分
if(t>0)
{
while(--t)
{
a.pop_front(); //删除此时元素来求要乘的数
rest=(rest*max((a.front()+1),2)+a.front())%mod;
}
a.pop_front();
rest=(rest*max(max(a.front(),b.front())+1,2)+a.front())%mod;
a.pop_front();
a.push_front(rest);
}
while(--wb)
{
int numa=a.front();
int numb=b.front();
a.pop_front();
b.pop_front();
diff=(diff+numa-numb)*(max(max(a.front(),b.front())+1,2))%mod;
}
diff+=a.front()-b.front();
cout<<diff<<endl;
}