Submission #3918207


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
#define rep(i,n) for(int i=0;i<int(n);++i)
#define all(a) (a).begin(),(a).end()

template<typename T>
class BIT {
    public:
    int n;
    vector<T> dat; // i: [1,n]

    BIT(int size): n(size+1), dat(vector<T>(n+1)) {}

    void add(int i, T x) {
        while (i <= n) {
            dat[i] += x;
            i += i & -i;
        }
    }

    T sum(int i) {
        T ret = 0;
        while (i > 0) {
            ret += dat[i];
            i -= i & -i;
        }
        return ret;
    }

    T range(int l, int r) {
        return sum(r) - sum(l-1);
    }
};

using ll = long long;

vector<ll> h;

// i < j, (v[i] op v[j]) を満たす(i,j)の組を数える
template<typename T>
ll inversion(vector<T> v, string op) {
    assert(op == "<=" || op == ">=" || op == ">" || op == "<");
    if (op == ">=" || op == "<") {
        reverse(v.begin(), v.end());
    }

    ll size = v.size();
    vector<pair<T, int>> vp(size);
    rep(i,size) {
        vp[i] = {v[i],i};
    }
    sort(vp.begin(), vp.end());

    // 小さい順に 1..size の連番を振る
    vector<int> order(size);
    rep(i,size) {
        order[vp[i].second] = i+1;
    }

    // i < j, order[i] <= order[j] の個数を数える
    ll result = 0;
    BIT<ll> bt(size);
    rep(i,size){
        result += bt.sum(order[i]);
        bt.add(order[i], h[i]);
    }

    if (op == ">" || op == "<") {
        return size*(size-1)/2 - result;
    } else {
        return result;
    }
}

int main(void){
    int n;
    cin >> n;
    h.resize(n);
    map<ll,bool> mp;
    bool ng = false;
    rep(i,n) {
        cin >> h[i];
        if (mp[h[i]]) ng = true;
        mp[h[i]] = true;
    }
    if (ng) {
        cout << -1 << endl;
        return 0;
    }
    reverse(all(h));
    cout << inversion(h, "<=") << endl;
    return 0;
}

Submission Info

Submission Time
Task E - Line up!
User yana87
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1940 Byte
Status AC
Exec Time 109 ms
Memory 10752 KB

Judge Result

Set Name Sample Subtask1 All
Score / Max Score 0 / 0 30 / 30 70 / 70
Status
AC × 2
AC × 25
AC × 45
Set Name Test Cases
Sample subtask0_sample_01.txt, subtask0_sample_02.txt
Subtask1 subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask0_sample_01.txt, subtask0_sample_02.txt
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask2_11.txt, subtask2_12.txt, subtask2_13.txt, subtask2_14.txt, subtask2_15.txt, subtask2_16.txt, subtask2_17.txt, subtask2_18.txt, subtask2_19.txt, subtask2_20.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 1 ms 256 KB
subtask0_sample_02.txt AC 1 ms 256 KB
subtask1_01.txt AC 2 ms 384 KB
subtask1_02.txt AC 2 ms 384 KB
subtask1_03.txt AC 2 ms 384 KB
subtask1_04.txt AC 1 ms 256 KB
subtask1_05.txt AC 1 ms 256 KB
subtask1_06.txt AC 1 ms 256 KB
subtask1_07.txt AC 1 ms 256 KB
subtask1_08.txt AC 2 ms 256 KB
subtask1_09.txt AC 2 ms 256 KB
subtask1_10.txt AC 2 ms 256 KB
subtask1_11.txt AC 2 ms 256 KB
subtask1_12.txt AC 2 ms 256 KB
subtask1_13.txt AC 2 ms 256 KB
subtask1_14.txt AC 2 ms 384 KB
subtask1_15.txt AC 2 ms 384 KB
subtask1_16.txt AC 2 ms 384 KB
subtask1_17.txt AC 2 ms 384 KB
subtask1_18.txt AC 2 ms 384 KB
subtask1_19.txt AC 2 ms 384 KB
subtask1_20.txt AC 2 ms 384 KB
subtask1_21.txt AC 2 ms 384 KB
subtask1_22.txt AC 2 ms 384 KB
subtask1_23.txt AC 2 ms 384 KB
subtask2_01.txt AC 100 ms 7296 KB
subtask2_02.txt AC 102 ms 10752 KB
subtask2_03.txt AC 109 ms 10752 KB
subtask2_04.txt AC 17 ms 1024 KB
subtask2_05.txt AC 100 ms 7296 KB
subtask2_06.txt AC 72 ms 6400 KB
subtask2_07.txt AC 72 ms 6400 KB
subtask2_08.txt AC 72 ms 6400 KB
subtask2_09.txt AC 72 ms 6400 KB
subtask2_10.txt AC 72 ms 6400 KB
subtask2_11.txt AC 96 ms 10752 KB
subtask2_12.txt AC 95 ms 10752 KB
subtask2_13.txt AC 94 ms 10752 KB
subtask2_14.txt AC 94 ms 10752 KB
subtask2_15.txt AC 95 ms 10752 KB
subtask2_16.txt AC 95 ms 10752 KB
subtask2_17.txt AC 94 ms 10752 KB
subtask2_18.txt AC 94 ms 10752 KB
subtask2_19.txt AC 95 ms 10752 KB
subtask2_20.txt AC 99 ms 10752 KB