#include <bits/stdc++.h>
#define int long long
using namespace std;
int aint[8000 * 4 + 5];
int ain2[50000 * 4 + 2][102];
int lazy[50000 * 4 + 2][102];
const int INF = 1e9;
void update(int nod, int st, int dr, int poz, int val)
{
if(st == dr)
{
aint[nod] += val;
return;
}
int mij = (st + dr) / 2;
if(poz <= mij) update(nod * 2, st, mij, poz, val);
else update(nod * 2 + 1, mij + 1, dr, poz, val);
aint[nod] = max(aint[nod * 2], aint[nod * 2 + 1]);
}
void propagate(int nod, int id)
{
ain2[nod * 2][id] += lazy[nod][id];
ain2[nod * 2 + 1][id] += lazy[nod][id];
lazy[nod * 2][id] += lazy[nod][id];
lazy[nod * 2 + 1][id] += lazy[nod][id];
lazy[nod][id] = 0;
}
void update2(int nod, int st, int dr, int le, int ri, int val, int id)
{
if(le > ri)
return;
if(st == le && dr == ri)
{
ain2[nod][id] += val;
lazy[nod][id] += val;
return;
}
propagate(nod, id);
int mij = (st + dr) / 2;
update2(nod * 2, st, mij, le, min(ri, mij), val, id);
update2(nod * 2 + 1, mij + 1, dr, max(le, mij + 1), ri, val, id);
ain2[nod][id] = max(ain2[nod * 2][id], ain2[nod * 2 + 1][id]);
}
vector<int32_t> countScans(vector<int32_t> a, vector<int32_t> x, vector<int32_t> v)
{
int n = a.size();
int q = x.size();
if(n <= 8000 && q <= 8000)
{
int rez = 0;
for(int i = 0; i < n; i++)
for(int j = i - 1; j >= 0; j--)
if(a[j] > a[i])
update(1, 1, n, i + 1, 1);
vector<int32_t> fin;
for(int i = 0; i < q; i++)
{
//cout<<rez<<" zzzz\n";
for(int j = x[i] + 1; j < n; j++)
{
if(a[x[i]] > a[j])
update(1, 1, n, j + 1, -1);
if(v[i] > a[j])
update(1, 1, n, j + 1, 1);
}
for(int j = x[i] - 1; j >= 0; j--)
{
if(a[j] > a[x[i]])
update(1, 1, n, x[i] + 1, -1);
if(a[j] > v[i])
update(1, 1, n, x[i] + 1, 1);
}
a[x[i]] = v[i];
fin.push_back(aint[1]);
}
return fin;
}
else
{
for(int i = 1; i <= 100; i++)
update2(1, 1, n, 1, n, -INF, i);
for(int i = 0; i < n; i++)
{
update2(1, 1, n, i + 1, i + 1, INF, a[i]);
for(int val = a[i] - 1; val >= 1; val--)
{
update2(1, 1, n, i + 2, n, 1, val);
}
}
vector<int32_t> fin;
for(int i = 0; i < q; i++)
{
update2(1, 1, n, x[i] + 1, x[i] + 1, -INF, a[x[i]]);
update2(1, 1, n, x[i] + 1, x[i] + 1, INF, v[i]);
for(int val = a[x[i]] - 1; val >= 1; val--)
{
update2(1, 1, n, x[i] + 2, n, -1, val);
}
for(int val = v[i] - 1; val >= 1; val--)
{
update2(1, 1, n, x[i] + 2, n, 1, val);
}
int rez = 0;
for(int j = 1; j <= 100; j++)
rez = max(rez, ain2[1][j]);
fin.push_back(rez);
}
return fin;
}
}
/*int main()
{
int n;
cin>>n;
vector<int> read;
for(int i = 1; i <= n; i++)
{
int a;
cin>>a;
read.push_back(a);
}
vector<int> q1, q2;
int q;
cin>>q;
for(int i = 1; i <= q; i++)
{
int a, b;
cin>>a>>b;
q1.push_back(a);
q2.push_back(b);
}
vector<int> rez = countScans(read, q1, q2);
for(auto it : rez)
cout<<it<<'\n';
return 0;
}*/
Compilation message
bubblesort2.cpp: In function 'std::vector<int> countScans(std::vector<int>, std::vector<int>, std::vector<int>)':
bubblesort2.cpp:60:13: warning: unused variable 'rez' [-Wunused-variable]
60 | int rez = 0;
| ^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
16 ms |
344 KB |
Output is correct |
2 |
Correct |
39 ms |
348 KB |
Output is correct |
3 |
Correct |
276 ms |
504 KB |
Output is correct |
4 |
Correct |
269 ms |
524 KB |
Output is correct |
5 |
Correct |
138 ms |
524 KB |
Output is correct |
6 |
Correct |
131 ms |
344 KB |
Output is correct |
7 |
Correct |
142 ms |
344 KB |
Output is correct |
8 |
Correct |
140 ms |
508 KB |
Output is correct |
9 |
Correct |
140 ms |
516 KB |
Output is correct |
10 |
Correct |
327 ms |
516 KB |
Output is correct |
11 |
Correct |
330 ms |
520 KB |
Output is correct |
12 |
Correct |
331 ms |
344 KB |
Output is correct |
13 |
Correct |
292 ms |
512 KB |
Output is correct |
14 |
Correct |
290 ms |
348 KB |
Output is correct |
15 |
Correct |
293 ms |
772 KB |
Output is correct |
16 |
Correct |
241 ms |
516 KB |
Output is correct |
17 |
Correct |
247 ms |
496 KB |
Output is correct |
18 |
Correct |
244 ms |
508 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
16 ms |
344 KB |
Output is correct |
2 |
Correct |
39 ms |
348 KB |
Output is correct |
3 |
Correct |
276 ms |
504 KB |
Output is correct |
4 |
Correct |
269 ms |
524 KB |
Output is correct |
5 |
Correct |
138 ms |
524 KB |
Output is correct |
6 |
Correct |
131 ms |
344 KB |
Output is correct |
7 |
Correct |
142 ms |
344 KB |
Output is correct |
8 |
Correct |
140 ms |
508 KB |
Output is correct |
9 |
Correct |
140 ms |
516 KB |
Output is correct |
10 |
Correct |
327 ms |
516 KB |
Output is correct |
11 |
Correct |
330 ms |
520 KB |
Output is correct |
12 |
Correct |
331 ms |
344 KB |
Output is correct |
13 |
Correct |
292 ms |
512 KB |
Output is correct |
14 |
Correct |
290 ms |
348 KB |
Output is correct |
15 |
Correct |
293 ms |
772 KB |
Output is correct |
16 |
Correct |
241 ms |
516 KB |
Output is correct |
17 |
Correct |
247 ms |
496 KB |
Output is correct |
18 |
Correct |
244 ms |
508 KB |
Output is correct |
19 |
Correct |
3912 ms |
868 KB |
Output is correct |
20 |
Correct |
5080 ms |
1264 KB |
Output is correct |
21 |
Correct |
2603 ms |
1052 KB |
Output is correct |
22 |
Correct |
2581 ms |
1108 KB |
Output is correct |
23 |
Correct |
6267 ms |
800 KB |
Output is correct |
24 |
Correct |
6234 ms |
784 KB |
Output is correct |
25 |
Correct |
5490 ms |
944 KB |
Output is correct |
26 |
Correct |
5484 ms |
1124 KB |
Output is correct |
27 |
Correct |
4758 ms |
1120 KB |
Output is correct |
28 |
Correct |
4729 ms |
760 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Incorrect |
295 ms |
109640 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
16 ms |
344 KB |
Output is correct |
2 |
Correct |
39 ms |
348 KB |
Output is correct |
3 |
Correct |
276 ms |
504 KB |
Output is correct |
4 |
Correct |
269 ms |
524 KB |
Output is correct |
5 |
Correct |
138 ms |
524 KB |
Output is correct |
6 |
Correct |
131 ms |
344 KB |
Output is correct |
7 |
Correct |
142 ms |
344 KB |
Output is correct |
8 |
Correct |
140 ms |
508 KB |
Output is correct |
9 |
Correct |
140 ms |
516 KB |
Output is correct |
10 |
Correct |
327 ms |
516 KB |
Output is correct |
11 |
Correct |
330 ms |
520 KB |
Output is correct |
12 |
Correct |
331 ms |
344 KB |
Output is correct |
13 |
Correct |
292 ms |
512 KB |
Output is correct |
14 |
Correct |
290 ms |
348 KB |
Output is correct |
15 |
Correct |
293 ms |
772 KB |
Output is correct |
16 |
Correct |
241 ms |
516 KB |
Output is correct |
17 |
Correct |
247 ms |
496 KB |
Output is correct |
18 |
Correct |
244 ms |
508 KB |
Output is correct |
19 |
Correct |
3912 ms |
868 KB |
Output is correct |
20 |
Correct |
5080 ms |
1264 KB |
Output is correct |
21 |
Correct |
2603 ms |
1052 KB |
Output is correct |
22 |
Correct |
2581 ms |
1108 KB |
Output is correct |
23 |
Correct |
6267 ms |
800 KB |
Output is correct |
24 |
Correct |
6234 ms |
784 KB |
Output is correct |
25 |
Correct |
5490 ms |
944 KB |
Output is correct |
26 |
Correct |
5484 ms |
1124 KB |
Output is correct |
27 |
Correct |
4758 ms |
1120 KB |
Output is correct |
28 |
Correct |
4729 ms |
760 KB |
Output is correct |
29 |
Incorrect |
295 ms |
109640 KB |
Output isn't correct |
30 |
Halted |
0 ms |
0 KB |
- |