답안 #999278

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
999278 2024-06-15T09:02:59 Z crafticat Diversity (CEOI21_diversity) C++17
0 / 100
2 ms 2652 KB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using pii = pair<ll,ll>;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);

    ll n, q; cin >> n >> q;
    vector<ll> arr(n);
    for (ll i = 0; i < n; ++i) {
        cin >> arr[i];
    }
    for (ll i = 0; i < q; ++i) {
        ll l, r; cin >> l >> r;
        l--;
        vector<ll> v;
        vector<ll> app(300002);
        v.reserve(r - l);
        ll s = r - l;
        for (ll j = l; j < r; ++j) {
            v.push_back(arr[j]);
        }
        for (auto x : v) {
            app[x]++;
        }
        vector<pii> v2;
        for (auto x : v) {
            v2.emplace_back(app[x],x);
        }
        std::sort(v2.begin(), v2.end());
        vector<pii> orderA, orderB;
        ll last = -1;
        ll leftS = 0, rightS = 0;
        bool dir = true;
        for (auto [a, x] : v2) {
            if (last != x) {
                dir = !dir;
                if (rand() % 2) {
                    orderA.emplace_back(x, a);
                    leftS += a;
                }
                else {
                    orderB.emplace_back(x,a);
                    rightS += a;
                }
            }
            last = x;
        }
        vector<pii> order;
        for (auto x : orderA) {
            order.push_back(x);
        }
        std::reverse(orderB.begin(), orderB.end());
        for (auto x : orderB) {
            order.push_back(x);
        }

        ll a = 0;
        ll ans = 0;
        for (auto [x, amount] : order) {
            ll b = a + amount;
            ll includeSub = a * (s - b);
            ll includePar = a * amount + (s - b) * amount;
            ll self = amount * (amount + 1) / 2;
            ans += self + includePar + includeSub;
            a += amount;
        }

        cout << ans << "\n";
    }

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2652 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Incorrect 1 ms 2652 KB Output isn't correct
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 2652 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2652 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Incorrect 1 ms 2652 KB Output isn't correct
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 2652 KB Output is correct
2 Correct 1 ms 2652 KB Output is correct
3 Correct 1 ms 2652 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Incorrect 1 ms 2652 KB Output isn't correct
7 Halted 0 ms 0 KB -