ABC C题求调
查看原帖
ABC C题求调
1013142
Chizuru_Ichinose楼主2024/11/9 21:45
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 2e5+5;
ll x[maxn],a[maxn];
int n,m; ll ans;
signed main()
{
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	cin>>n>>m;
	for(int i = 1; i <= m; i++) cin>>x[i];
	for(int i = 1; i <= m; i++) {cin>>a[i];--a[i];}
	if(x[1] != 1) 
	{
		cout<<-1;
		return 0;
	}
	ll dis = 0; 
	for(int i = 1; i < m; i++)
	{
		dis = x[i+1] - x[i] - 1;
		if(a[i] < dis){cout<<-1; return 0;}
		ans += (1+dis)*dis/2;
		a[i] -= dis;
		ans += (dis+1)*a[i];
		a[i+1] += a[i];
		a[i] = 0;
	}
	if(a[m] > (n-x[m])){cout<<-1; return 0;}
	dis = n - x[m];
	ans += (dis+1)*dis/2;
	cout<<ans<<endl;
	
	return 0;
}
2024/11/9 21:45
加载中...