萌新求助
  • 板块P9228 原神
  • 楼主LOGICat
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/7/9 21:29
  • 上次更新2023/11/3 10:51:12
查看原帖
萌新求助
1033637
LOGICat楼主2023/7/9 21:29

有没有dalao帮忙看看思路有没有问题呀

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>

using namespace std;

int main() {
    int n, m, k, tn = 0, tm = 0, count = 0;
    int a[1000011], b[1000011];
    //int a, b, x, y;
    //int a[111], b[111], c[111], d[111];
    //int dx[14] = {0, -2, -1, 0, 1, 2, 0, 0, 0, 0, 1, 1, -1, -1}, dy[14] = {0, 0, 0, 0, 0, 0, -2, -1, 1, 2, 1, -1, 1, -1};

    cin >> n >> m >> k;

    for(int i = 1;i <= n;i ++) cin >> a[i];
    for(int i = 1;i <= m;i ++) cin >> b[i];

    sort(a + 1, a + n + 1); reverse(a + 1, a + n + 1);
    sort(b + 1, b + m + 1); reverse(b + 1, b + m + 1);

    for(int i = 1; i <= min(n, m);i ++) {
        if(a[i + tn] > k) {
            count += a[i + tn] * 2 + b[min(n, m) - tn];
            tn++;
        }
        else {
            count += b[i + tm] + k + a[min(n, m) - tm];
            tm++;
        }
    }
    if(n > m) {
        for(int i = m + 1;i <= n;i ++) {
            count += a[i];
        }
    }
    if(m > n) {
        for(int i = n + 1;i <= m;i ++) {
            count += b[i];
        }
    }

    cout << count << endl;

    return 0;
}
2023/7/9 21:29
加载中...