关于C++版本
  • 板块P6155 修改
  • 楼主mm1214
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/3 11:55
  • 上次更新2024/7/3 15:07:11
查看原帖
关于C++版本
774258
mm1214楼主2024/7/3 11:55

我使用C++17和C++20ACAC了,但是再用C++14(GCC9)交就RERE了,请问这是为什么。(悬一关)

Code:Code:

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/hash_policy.hpp>
#include <ext/pb_ds/priority_queue.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define int long long
#define pii pair<int , int>
#define pb emplace_back
#define mkp make_pair
#define fi first
#define se second
#define ls (rt << 1)
#define rs (rt << 1 | 1)
#define mid (l + r >> 1)
using namespace std;
using namespace __gnu_pbds;
int n , a[1000005] , b[1000005];
unsigned int ans;
gp_hash_table <int , int> mp;
vector <int> need;
int find(int x) {
    return (mp[x] == 0 ? (mp[x] = (x + 1)) : (mp[x] = find(mp[x])));
}
void solve() {
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];
    for (int i = 1; i <= n; i++) cin >> b[i];
    sort(a + 1 , a + n + 1 , greater<int>());
    sort(b + 1 , b + n + 1);
    for (int i = 1 , tmp; i <= n; i++) {
        tmp = find(a[i]) - a[i] - 1;
        if (tmp) need.pb(tmp);
    }
    sort(need.begin() , need.end() , greater<int>());
    for (int i = 0 , j = 1; i < need.size(); i++ , j++) {
        ans += 1ull * need[i] * b[j];
    }
    cout << ans << '\n';
    return;
}
signed main() {
    ios::sync_with_stdio(0) , cin.tie(0) , cout.tie(0);
    int T = 1;
    while(T--) solve();
    return 0;
}
2024/7/3 11:55
加载中...