主要思路就是贪心,批量模拟每个位置的石头从哪个地方来
#include<iostream>
using namespace std;
#define int long long
int x[200005],a[200005];
signed main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>x[i];
for(int i=1;i<=m;i++) cin>>a[i];
int p=n,cnt=m,ans=0;
while(cnt>=1){
if(p-x[cnt]+1<a[cnt]){
cout<<-1;
return 0;
}
p-=a[cnt];
ans+=(p+1-x[cnt]+p+a[cnt]-x[cnt])*a[cnt]/2;
cnt--;
}
cout<<ans;
return 0;
}