Compile Error
foo.cc:16:10: error: 'unordered_map' in namespace 'std::tr1' does not name a template type
16 | tr1::unordered_map <long long, int> mp; /// Change to int if only int in treap
| ^~~~~~~~~~~~~
foo.cc: In constructor 'Treap::Treap()':
foo.cc:21:20: error: 'mp' was not declared in this scope
21 | T.clear(), mp.clear();
| ^~
foo.cc: In member function 'void Treap::clear()':
foo.cc:26:20: error: 'mp' was not declared in this scope
26 | T.clear(), mp.clear();
| ^~
foo.cc: In member function 'void Treap::insert(long long int)':
foo.cc:31:17: error: 'mp' was not declared in this scope
31 | int c = mp[x]++;
| ^~
foo.cc: In member function 'void Treap::erase(long long int)':
foo.cc:37:17: error: 'mp' was not declared in this scope
37 | int c = mp[x];
| ^~
foo.cc: In member function 'int Treap::count(long long int)':
foo.cc:54:17: error: 'mp' was not declared in this scope
54 | int c = mp[--x];
| ^~
Code
#include<bits/stdc++.h>
#define ll long long
using namespace std;
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
// Template of Multi Ordered set
struct Treap{ /// hash = 96814
int len;
const int ADD = 1000010;
const int MAXVAL = 1000000010;
tr1::unordered_map <long long, int> mp; /// Change to int if only int in treap
tree<long long, null_type, less<long long>, rb_tree_tag, tree_order_statistics_node_update> T;
Treap(){
len = 0;
T.clear(), mp.clear();
}
inline void clear(){
len = 0;
T.clear(), mp.clear();
}
inline void insert(long long x){
len++, x += MAXVAL;
int c = mp[x]++;
T.insert((x * ADD) + c);
}
inline void erase(long long x){
x += MAXVAL;
int c = mp[x];
if (c){
c--, mp[x]--, len--;
T.erase((x * ADD) + c);
}
}
/// 1-based index, returns the K'th element in the treap, -1 if none exists
inline long long kth(int k){
if (k < 1 || k > len) return -1;
auto it = T.find_by_order(--k);
return ((*it) / ADD) - MAXVAL;
}
/// Count of value < x in treap
inline int count(long long x){
x += MAXVAL;
int c = mp[--x];
return (T.order_of_key((x * ADD) + c));
}
/// Number of elements in treap
inline int size(){
return len;
}
};
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--){
int n, q;
cin >> n;
Treap tt;
map<int, int> mp1, mp2;
vector<ll> a(n), mn1(n), mn2(n), mx1(n), mx2(n), ans(n);
for (int i = 0; i < n; i++){
cin >> a[i];
tt.insert(a[i]);
mp1[a[i]]++;
int x = tt.count(a[i]);
mn1[i] = x;
mx1[i] = (i + 1) - x - mp1[a[i]];
}
tt.clear();
int cnt = 0;
for (int i = n - 1; i >= 0; i--){
tt.insert(a[i]);
mp2[a[i]]++;
cnt++;
int x = tt.count(a[i]);
mn2[i] = x;
mx2[i] = cnt - x - mp2[a[i]];
}
for (int i = 0; i < n; i++){
ans[i] = mn1[i] * mx2[i] + mn2[i] * mx1[i];
}
cin >> q;
while (q--){
int j;
cin >> j;
j--;
cout << ans[j] << "\n";
}
}
return 0;
}
Information
- Submit By
- Type
- Submission
- Problem
- P1079 G1. Roy and Query (Easy Version)
- Contest
- Brain Booster #6
- Language
- C++11 (G++ 13.2.0)
- Submit At
- 2024-10-03 17:59:37
- Judged At
- 2024-12-17 11:31:59
- Judged By
- Score
- 0
- Total Time
- 0ms
- Peak Memory
- 0 Bytes