Submission #1163076

#TimeUsernameProblemLanguageResultExecution timeMemory
1163076pinbuBubble Sort 2 (JOI18_bubblesort2)C++20
100 / 100
1438 ms108784 KiB
#include "bubblesort2.h" #include <cstdio> #include <cstdlib> #include <vector> #include <set> #include <algorithm> using namespace std; int lazy[1 << 21], val[1 << 21]; void update(int Lf, int Rt, int x, int id, int l, int r) { if (Lf <= l && r <= Rt) { val[id] += x; lazy[id] += x; return; } int mid = l + r >> 1; if (Lf <= mid) update(Lf, Rt, x, id << 1, l, mid); if (Rt > mid) update(Lf, Rt, x, id << 1 | 1, mid + 1, r); val[id] = max(val[id << 1], val[id << 1 | 1]) + lazy[id]; } void update(int Lf, int Rt, int x) { if (Lf <= Rt) { update(Lf, Rt, x, 1, 0, 999999); } } set<int> se[1000000]; std::vector<int> countScans(std::vector<int> a,std::vector<int> x,std::vector<int> v){ int N = a.size(), Q = x.size(); std::vector<int> answer(Q); vector<int> comp; for (int ai: a) { comp.emplace_back(ai); } for (int vi: v) { comp.emplace_back(vi); } sort(begin(comp), end(comp)); comp.resize(unique(begin(comp), end(comp)) - comp.begin()); int nnn = comp.size(); vector<int> cnt(nnn, 0); for (int i = N - 1; i >= 0; i--) { a[i] = lower_bound(begin(comp), end(comp), a[i]) - comp.begin(); if (!cnt[a[i]]) { update(a[i], a[i], i + 1); } se[a[i]].insert(i + 1); cnt[a[i]]++; } for (int p = 0; p < nnn; p++) { if (cnt[p]) { update(p, nnn - 1, -cnt[p]); } } for (int &vi: v) { vi = lower_bound(begin(comp), end(comp), vi) - comp.begin(); } auto upd = [&] (int t, int p) { int xnxx = a[p]; update(xnxx, nnn - 1, -t); }; for (int i = 0; i < Q; i++) { int p = x[i], xnxx = v[i]; upd(-1, p); int vl = -*se[a[p]].rbegin(); se[a[p]].erase(p + 1); if (se[a[p]].size()) { vl += *se[a[p]].rbegin(); } update(a[p], a[p], vl); a[p] = xnxx; upd(1, p); vl = 0; if (se[a[p]].size()) vl = -*se[a[p]].rbegin(); se[a[p]].insert(p + 1); vl += *se[a[p]].rbegin(); update(a[p], a[p], vl); answer[i] = val[1]; } return answer; } ////////////////////////////////////
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...