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 |
|
|
|
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 |