#include <bits/stdc++.h>
#include "bubblesort2.h"
using namespace std;
const int MAX_N = 8000;
vector<int> a;
int maxpref[MAX_N], minsuff[MAX_N];
int badsegtree[MAX_N];
void update(int poz, int val, int n) {
maxpref[0] = a[0];
for(int i = 1; i < n; ++i)
maxpref[i] = max(maxpref[i - 1], a[i]);
minsuff[n - 1] = a[n - 1];
for(int i = n - 2; i >= 0; --i)
minsuff[i] = min(minsuff[i + 1], a[i]);
for(int i = 0; i < poz; ++i)
if(maxpref[i] > a[poz])
badsegtree[i] += val;
for(int i = poz; i < n - 1; ++i)
if(a[poz] > minsuff[i])
badsegtree[i] += val;
}
int getInv(int n) {
int rez = 0;
for(int i = 0; i < n; ++i)
rez = max(rez, badsegtree[i]);
return rez;
}
std::vector<int> countScans(std::vector<int> A,std::vector<int> X,std::vector<int> V){
int n, q;
a = A;
q = X.size();
std::vector<int> rez(q);
n = A.size();
for(int i = 0; i < q; ++i) {
update(X[i], -1, a[X[i]]);
a[X[i]] = V[i];
update(X[i], 1, V[i]);
rez[i] = getInv(n);
}
return rez;
}
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
3 ms |
632 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
3 ms |
632 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
6 ms |
1144 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Runtime error |
3 ms |
632 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |