ABC C求条
  • 板块灌水区
  • 楼主Wuming_Shi
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/11/9 21:47
  • 上次更新2024/11/10 08:51:51
查看原帖
ABC C求条
326172
Wuming_Shi楼主2024/11/9 21:47

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;
}
2024/11/9 21:47
加载中...