Submission #1268261

#TimeUsernameProblemLanguageResultExecution timeMemory
1268261MisterReaperBubble Sort 2 (JOI18_bubblesort2)C++20
38 / 100
9093 ms1448 KiB
#include "bubblesort2.h" #include <bits/stdc++.h> using i64 = long long; #ifdef DEBUG #include "/home/ahmetalp/Desktop/Workplace/debug.h" #else #define debug(...) void(23) #endif struct fenwick { int n; std::vector<int> tree; fenwick() {} fenwick(int n_) { init(n_); } void init(int n_) { n = n_; tree.assign(n + 1, 0); } void modify(int p, int x) { for (p += 1; p <= n; p += p & -p) { tree[p] += x; } } int get(int p) { int res = 0; for (p += 1; p; p -= p & -p) { res += tree[p]; } return res; } }; std::vector<int> countScans(std::vector<int> A, std::vector<int> X, std::vector<int> V){ std::vector<int> ids(A.begin(), A.end()); ids.insert(ids.end(), V.begin(), V.end()); std::sort(ids.begin(), ids.end()); int n; ids.resize(n = int(std::unique(ids.begin(), ids.end()) - ids.begin())); fenwick fen; int N = int(A.size()); int Q = int(X.size()); for (int i = 0; i < N; ++i) { A[i] = int(std::lower_bound(ids.begin(), ids.end(), A[i]) - ids.begin()); } for (int i = 0; i < Q; ++i) { V[i] = int(std::lower_bound(ids.begin(), ids.end(), V[i]) - ids.begin()); } std::vector<int> ans(Q); for (int i = 0; i < Q; ++i) { fen.init(n); A[X[i]] = V[i]; int& res = ans[i]; for (int j = 0; j < N; ++j) { int x = j - fen.get(A[j]); res = std::max(res, x); fen.modify(A[j], +1); } } return 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...