rt,哪错了?
#include<iostream>
#include<algorithm>
using namespace std;
#define int long long
const int N=2e5+10;
struct node{
int x,a;
}a[N];
bool cmp(node a,node b){
return a.x<b.x;
}
signed main(){
int n,m,t=0,sum=0,ans=0;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i].x;
for(int i=1;i<=m;i++){
cin>>a[i].a;
ans+=a[i].a*(a[i].a-1)/2;
sum+=a[i].a;
}
sort(a+1,a+m+1,cmp);
if(a[1].x!=1||sum!=n){
cout<<-1;
return 0;
}
a[m+1].x=n+1,t=a[1].a;
for(int i=2;i<=m+1;i++){
if(a[i].x>t+1){
cout<<-1;
return 0;
}
t+=a[i].a;
}
cout<<ans;
return 0;
}