Submission #1281983

#TimeUsernameProblemLanguageResultExecution timeMemory
1281983cheskaMountains (NOI20_mountains)C++20
24 / 100
395 ms26576 KiB
#include <bits/stdc++.h> using namespace std; #define pii pair<int, int> #define ppii pair<pii, pii> #define tiii tuple<int, int, int> #define g0 get<0> #define g1 get<1> #define g2 get<2> #define f first #define s second #define pb push_back const int N = 5005; const int MOD = 1e9+7; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> vector<int> compress(vector<int> b, int n) { map<int, int> m; vector<pii> c(n); for (int i = 0; i < n; i++) { c[i] = {b[i], i}; } sort(c.begin(), c.end()); int cr = 0; for (int i = 0; i < n; i++) { if (m.count(c[i].f)) b[c[i].s] = m[c[i].f]; else { b[c[i].s] = cr; m[c[i].f] = cr; cr++; } } return b; } signed main() { // freopen("in.in", "r", stdin); ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; vector<int> b(n); map<int, vector<int>> a; for (int i = 0; i < n; i++) { cin >> b[i]; } b = compress(b, n); for (int i = 0; i < n; i++) { a[b[i]].pb(i); } ordered_set ss; long long ans = 0; for (auto i : a) { for (int j : i.s) { int k = ss.order_of_key(j); ans += k*(ss.size()-k); } for (int j : i.s) { ss.insert(j); } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...