C题,就WA了五个啊啊啊!!
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
ll a,x;
}num[1000000+10];
bool cmp(node a,node b){
return a.a<b.a;
}
int main(){
ll n,m,ans=0;
cin>>n>>m;
for(ll i=1;i<=m;i++) cin>>num[i].a;
for(ll i=1;i<=m;i++){
cin>>num[i].x;
ans+=num[i].x*((num[i].x)-1)*0.5;
}
sort(num+1,num+m+1,cmp);
//for(ll i=1;i<=m;i++) cout<<num[i].a<<" ";
ll sum=0;
for(ll i=2;i<=m;i++){
sum+=num[i].a-num[i-1].a-1;
sum-=num[i-1].x-1;
//cout<<"<<<sum>>>"<<sum<<"\n";
if(sum>0){
cout<<-1;
return 0;
}
ans+=-1*sum*num[i].x;
}
if(num[m].x-1==n-num[m].a+sum){
cout<<ans;
}else{
cout<<-1;
}
return 0;
}
码风可能不太好