Submission #813156

# Submission time Handle Problem Language Result Execution time Memory
813156 2023-08-07T13:58:36 Z SlavicG Bubble Sort 2 (JOI18_bubblesort2) C++17
38 / 100
1174 ms 118564 KB
#include "bubblesort2.h"
#include <bits/stdc++.h>
using namespace std;

#define ll int64_t

const ll inf = 1e10;
const int N = 4e6 + 5;
ll t[4 * N], lazy[4 * N];
void push(int i, int l, int r) {
	if(!lazy[i]) return;
	t[i] += lazy[i];
	if(l != r) {
		lazy[2 * i] += lazy[i];
		lazy[2 * i + 1] += lazy[i];
	}
	lazy[i] = 0;
}
void modif(int i, int l, int r, int tl, int tr, ll val) {
	push(i, l, r);
	if(l > tr || r < tl) return;
	if(l >= tl && r <= tr) {
		lazy[i] += val;
		push(i, l,r);
		return;
	}
	int mid = l + r >> 1;
	modif(2 * i, l, mid, tl, tr, val);
	modif(2 * i + 1, mid + 1, r, tl, tr, val);
	t[i] = max(t[2 * i], t[2 * i + 1]);
}
std::vector<int> countScans(vector<int> a, vector<int> X, vector<int> V){
	int n = a.size();
	int q = X.size();
	vector<int> ans(q);
	vector<int> cnt(n, 0);
	vector<ll> c(n);
	vector<ll> vals;
	//compresam coordonatele si ne asiguram sa nu avem duplicate
	for(int i = 0; i < n; ++i) {
		vals.push_back(inf * (ll)a[i] + i); 
	}
	for(int k = 0; k < q; ++k) {
		int i = X[k];
		ll newval = inf * V[k] + i;
		vals.push_back(newval);
	}
	sort(vals.begin(), vals.end());
	vals.erase(unique(vals.begin(), vals.end()), vals.end());
	for(int i = 0; i < n; ++i) {
		a[i] = lower_bound(vals.begin(), vals.end(), (ll)a[i] * (ll)inf + i) - vals.begin();
	}
	for(int k = 0; k < q; ++k) {
		int i = X[k];
		ll newval = inf * V[k] + i;
		V[k] = lower_bound(vals.begin(), vals.end(), newval) - vals.begin();
	}


	//acum rezolvam problema dupa ce am compresat tot
	for(int i = 0; i < N; ++i) modif(1, 0, N - 1, i, i, -inf);

	for(int i = 0; i < n; ++i) {
		modif(1, 0, N - 1, a[i], a[i], inf + i);
	}
	for(int i = 0; i < n; ++i) {
		modif(1, 0, N - 1, a[i] + 1, N - 1, -1);
	}
	for(int k = 0; k < q; ++k) {
		int i = X[k], newval = V[k];
		modif(1, 0, N - 1, a[i] + 1, N - 1, +1);
		modif(1, 0, N - 1, a[i], a[i], -2 * inf - i);
		a[i] = newval;
		modif(1, 0, N - 1, a[i], a[i], inf + i);
		modif(1, 0, N - 1, a[i] + 1, N - 1, -1);
		ans[k] = t[1]; 
	}


	return ans;
}
/*
4 2
1 2 3 4
0 3
2 1
*/

Compilation message

bubblesort2.cpp: In function 'void modif(int, int, int, int, int, int64_t)':
bubblesort2.cpp:27:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   27 |  int mid = l + r >> 1;
      |            ~~^~~
# Verdict Execution time Memory Grader output
1 Correct 965 ms 115272 KB Output is correct
2 Correct 969 ms 115260 KB Output is correct
3 Correct 930 ms 115400 KB Output is correct
4 Correct 917 ms 115384 KB Output is correct
5 Correct 924 ms 115576 KB Output is correct
6 Correct 950 ms 115428 KB Output is correct
7 Correct 935 ms 115504 KB Output is correct
8 Correct 946 ms 115408 KB Output is correct
9 Correct 938 ms 115580 KB Output is correct
10 Correct 927 ms 115452 KB Output is correct
11 Correct 939 ms 115472 KB Output is correct
12 Correct 925 ms 115440 KB Output is correct
13 Correct 919 ms 115432 KB Output is correct
14 Correct 961 ms 115412 KB Output is correct
15 Correct 939 ms 115448 KB Output is correct
16 Correct 924 ms 115532 KB Output is correct
17 Correct 925 ms 115368 KB Output is correct
18 Correct 938 ms 115380 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 965 ms 115272 KB Output is correct
2 Correct 969 ms 115260 KB Output is correct
3 Correct 930 ms 115400 KB Output is correct
4 Correct 917 ms 115384 KB Output is correct
5 Correct 924 ms 115576 KB Output is correct
6 Correct 950 ms 115428 KB Output is correct
7 Correct 935 ms 115504 KB Output is correct
8 Correct 946 ms 115408 KB Output is correct
9 Correct 938 ms 115580 KB Output is correct
10 Correct 927 ms 115452 KB Output is correct
11 Correct 939 ms 115472 KB Output is correct
12 Correct 925 ms 115440 KB Output is correct
13 Correct 919 ms 115432 KB Output is correct
14 Correct 961 ms 115412 KB Output is correct
15 Correct 939 ms 115448 KB Output is correct
16 Correct 924 ms 115532 KB Output is correct
17 Correct 925 ms 115368 KB Output is correct
18 Correct 938 ms 115380 KB Output is correct
19 Correct 950 ms 115808 KB Output is correct
20 Correct 940 ms 115896 KB Output is correct
21 Correct 931 ms 115900 KB Output is correct
22 Correct 991 ms 115920 KB Output is correct
23 Correct 938 ms 115924 KB Output is correct
24 Correct 950 ms 115912 KB Output is correct
25 Correct 970 ms 115932 KB Output is correct
26 Correct 933 ms 115916 KB Output is correct
27 Correct 994 ms 115896 KB Output is correct
28 Correct 930 ms 115860 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 938 ms 116288 KB Output is correct
2 Correct 1010 ms 117372 KB Output is correct
3 Correct 1042 ms 118444 KB Output is correct
4 Correct 1060 ms 118496 KB Output is correct
5 Correct 1068 ms 118520 KB Output is correct
6 Correct 1174 ms 118564 KB Output is correct
7 Correct 1171 ms 118452 KB Output is correct
8 Correct 1073 ms 118524 KB Output is correct
9 Correct 1120 ms 118460 KB Output is correct
10 Incorrect 1089 ms 118356 KB Output isn't correct
11 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 965 ms 115272 KB Output is correct
2 Correct 969 ms 115260 KB Output is correct
3 Correct 930 ms 115400 KB Output is correct
4 Correct 917 ms 115384 KB Output is correct
5 Correct 924 ms 115576 KB Output is correct
6 Correct 950 ms 115428 KB Output is correct
7 Correct 935 ms 115504 KB Output is correct
8 Correct 946 ms 115408 KB Output is correct
9 Correct 938 ms 115580 KB Output is correct
10 Correct 927 ms 115452 KB Output is correct
11 Correct 939 ms 115472 KB Output is correct
12 Correct 925 ms 115440 KB Output is correct
13 Correct 919 ms 115432 KB Output is correct
14 Correct 961 ms 115412 KB Output is correct
15 Correct 939 ms 115448 KB Output is correct
16 Correct 924 ms 115532 KB Output is correct
17 Correct 925 ms 115368 KB Output is correct
18 Correct 938 ms 115380 KB Output is correct
19 Correct 950 ms 115808 KB Output is correct
20 Correct 940 ms 115896 KB Output is correct
21 Correct 931 ms 115900 KB Output is correct
22 Correct 991 ms 115920 KB Output is correct
23 Correct 938 ms 115924 KB Output is correct
24 Correct 950 ms 115912 KB Output is correct
25 Correct 970 ms 115932 KB Output is correct
26 Correct 933 ms 115916 KB Output is correct
27 Correct 994 ms 115896 KB Output is correct
28 Correct 930 ms 115860 KB Output is correct
29 Correct 938 ms 116288 KB Output is correct
30 Correct 1010 ms 117372 KB Output is correct
31 Correct 1042 ms 118444 KB Output is correct
32 Correct 1060 ms 118496 KB Output is correct
33 Correct 1068 ms 118520 KB Output is correct
34 Correct 1174 ms 118564 KB Output is correct
35 Correct 1171 ms 118452 KB Output is correct
36 Correct 1073 ms 118524 KB Output is correct
37 Correct 1120 ms 118460 KB Output is correct
38 Incorrect 1089 ms 118356 KB Output isn't correct
39 Halted 0 ms 0 KB -