Submission #1156592

#TimeUsernameProblemLanguageResultExecution timeMemory
1156592njoopBubble Sort 2 (JOI18_bubblesort2)C++20
Compilation error
0 ms0 KiB
#include "bubblesort2.h" #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #define int long long using namespace std; using namespace __gnu_pbds; #define ordered_set tree<int, null_type, less_equal<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set s; map<pair<int, int>, int> mp; struct st { vector<int> seg, lazy; void init() { seg.assign(2500010, 0); lazy.assign(2500010, 0); } void push(int l, int r, int node) { if(lazy[node] != 0) { seg[node] += lazy[node]; if(l != r) { lazy[node*2] += lazy[node]; lazy[node*2+1] += lazy[node]; } lazy[node] = 0; } } void update(int l, int r, int idl, int idr, int val, int node) { push(l, r, node); if(l > idr || r < idl) return; if(l >= idl && r <= idr) { seg[node] += val; if(l != r) { lazy[node*2] += val; lazy[node*2+1] += val; } return; } int mid = l + (r-l)/2; update(l, mid, idl, idr, val, node*2); update(mid+1, r, idl, idr, val, node*2+1); seg[node] = max(seg[node*2], seg[node*2+1]); } int query(int l, int r, int ql, int qr, int node) { push(l, r, node); if(l > qr || r < ql) return 0; if(l >= ql && r <= qr) return seg[node]; int mid = l+(r-l)/2; return max(query(l, mid, ql, qr, node*2), query(mid+1, r, ql, qr, node*2+1)); } }; vector<int> countScans(vector<int> a, vector<int> x, vector<int> v){ int q=x.size(), n=a.size(), val, idx, oidx; vector<int> answer(q); vector<pair<int, int>> vec; st seg; seg.init(); for(int i=0; i<n; i++) { vec.push_back({a[i], i}); s.insert(a[i]); } for(int i=0; i<q; i++) { vec.push_back({v[i], x[i]}); } sort(vec.begin(), vec.end()); unique(vec.begin(), vec.end()); for(int i=0; i<vec.size(); i++) { mp[{vec[i].first, vec[i].second}] = i+1; } for(int i=0; i<n; i++) { idx = mp[{a[i], i}]; val = i-s.order_of_key(a[i]); seg.update(1, n+q, idx, idx, val, 1); } for(int i=0; i<q; i++) { idx = mp[{v[i], x[i]}]; oidx = mp[{a[i], i}]; s.erase(s.find(a[x[i]])); s.insert(v[i]); a[x[i]] = v[i]; if(oidx < idx) { seg.update(1, n+q, oidx, idx, 1, 1); } else { seg.update(1, n+q, idx, oidx, -1, 1); } val = seg.query(1, n+q, oidx, oidx, 1); seg.update(1, n+q, oidx, oidx, -val, 1); val = x[i]-s.order_of_key(v[i]) - seg.query(1, n+q, idx, idx, 1); seg.update(1, n+q, idx, idx, val, 1); answer[i] = seg.query(1, n+q, 1, n+q, 1); } return answer; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccnxL7kO.o: in function `main':
grader.cpp:(.text.startup+0x189): undefined reference to `countScans(std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status