WA了3个点,不知道为什么qwq
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2e5 + 10;
ll n, k;
struct Node {
ll x, a;
bool operator< (const Node node) const {
return x < node.x;
}
}arr[MAXN];
int main() {
cin >> n >> k; ll sum = 0, sump = 0;
for (int i = 1; i <= k; i++) {
cin >> arr[i].x;
}
for (int i = 1; i <= k; i++) {
cin >> arr[i].a;
}
sort(arr + 1, arr + k + 1);
arr[k + 1].x = n + 1;
for (int i = 1; i <= k; i++) {
sump += arr[i].x;
sum += arr[i].a;
}
if (sum != n) {
cout << -1 << endl;
return 0;
}
sum = 0; ll s2 = 0;
for (int i = 1; i <= k; i++) {
s2 += arr[i].a - 1;
sum += arr[i + 1].x - arr[i].x - 1;
if (s2 < sum) {
cout << -1 << endl;
return 0;
}
}
ll ans = (n + 1) * n / 2 - sump;
for (int i = 1; i <= k; i++) {
ans -= arr[i].x * (arr[i].a - 1);
}
cout << ans << endl;
return 0;
}