提出 #71859313


ソースコード 拡げる

#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <climits>
#include <stack>
#include <set>
#include <unordered_map>
#include <string>
#include <cmath>

using namespace std;
using ll = unsigned long long;
int MOD = 998244353;

int search(vector<ll>& b, ll v) {
    int left = 0;
    int right = b.size()-1;
    int ans = -1;
    while (left <= right) {
        int mid = left + (right - left) / 2;
        if (b[mid] >= v) {
            ans = mid;
            right = mid - 1;
        }
        else {
            left = mid + 1;
        }
    }
    return ans;
}

void solve() {
    int n, m;
    cin >> n >> m;
    vector<ll> a(n);
    vector<ll> b(m);
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    for (int i = 0; i < m; i++)cin >> b[i];
    sort(b.begin(), b.end());
    vector<ll> sum(m);
    sum[0] = b[0];
    for (int i = 1; i < m; i++)sum[i] = sum[i - 1] + b[i];
    ll ans = 0;
    for (int i = 0; i < n; i++) {
        int pos = search(b, a[i]);
        if (pos != -1) {
            ans += pos == 0 ? 0 : (pos * a[i] - sum[pos - 1]);
            ans %= MOD;
            ans += pos == 0 ? (sum.back() - m * a[i]) : (sum.back() - sum[pos - 1] - (m - pos) * a[i]);
            ans %= MOD;
        }
        else {
            ans += m * a[i] - sum.back();
            ans %= MOD;
        }
    }
    cout << ans << endl;
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    solve();
    return 0;
}

提出情報

提出日時
問題 D - Sum of Differences
ユーザ alexxy
言語 C++23 (GCC 15.2.0)
得点 400
コード長 1561 Byte
結果 AC
実行時間 78 ms
メモリ 10320 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 2
AC × 32
セット名 テストケース
Sample 00-sample-01.txt, 00-sample-02.txt
All 00-sample-01.txt, 00-sample-02.txt, 01-01.txt, 01-02.txt, 01-03.txt, 01-04.txt, 01-05.txt, 01-06.txt, 01-07.txt, 01-08.txt, 01-09.txt, 01-10.txt, 01-11.txt, 01-12.txt, 01-13.txt, 01-14.txt, 01-15.txt, 01-16.txt, 01-17.txt, 01-18.txt, 01-19.txt, 01-20.txt, 01-21.txt, 01-22.txt, 01-23.txt, 01-24.txt, 01-25.txt, 01-26.txt, 01-27.txt, 01-28.txt, 01-29.txt, 01-30.txt
ケース名 結果 実行時間 メモリ
00-sample-01.txt AC 1 ms 3600 KiB
00-sample-02.txt AC 1 ms 3560 KiB
01-01.txt AC 2 ms 3656 KiB
01-02.txt AC 2 ms 3728 KiB
01-03.txt AC 2 ms 3880 KiB
01-04.txt AC 2 ms 3724 KiB
01-05.txt AC 2 ms 3848 KiB
01-06.txt AC 2 ms 3772 KiB
01-07.txt AC 2 ms 3784 KiB
01-08.txt AC 2 ms 3580 KiB
01-09.txt AC 2 ms 3848 KiB
01-10.txt AC 1 ms 3684 KiB
01-11.txt AC 2 ms 3724 KiB
01-12.txt AC 2 ms 3724 KiB
01-13.txt AC 2 ms 3852 KiB
01-14.txt AC 2 ms 3724 KiB
01-15.txt AC 1 ms 3480 KiB
01-16.txt AC 1 ms 3544 KiB
01-17.txt AC 55 ms 8912 KiB
01-18.txt AC 58 ms 8204 KiB
01-19.txt AC 30 ms 8008 KiB
01-20.txt AC 13 ms 5708 KiB
01-21.txt AC 78 ms 10308 KiB
01-22.txt AC 38 ms 10296 KiB
01-23.txt AC 37 ms 10320 KiB
01-24.txt AC 49 ms 10320 KiB
01-25.txt AC 52 ms 10304 KiB
01-26.txt AC 28 ms 10196 KiB
01-27.txt AC 30 ms 7972 KiB
01-28.txt AC 34 ms 8656 KiB
01-29.txt AC 30 ms 8504 KiB
01-30.txt AC 56 ms 9296 KiB