Submission #920423

# Submission time Handle Problem Language Result Execution time Memory
920423 2024-02-02T14:24:46 Z KiaRez Financial Report (JOI21_financial) C++17
14 / 100
4000 ms 40412 KB
/*
    IN THE NAME OF GOD
*/
#include <bits/stdc++.h>

// #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")

using namespace std;

typedef __int128 ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
typedef long double ld;

#define F                                      first
#define S                                      second
#define Mp                                     make_pair
#define pb                                     push_back
#define pf                                     push_front
#define size(x)                                ((ll)x.size())
#define all(x)                                 (x).begin(),(x).end()
#define kill(x)		                           cout << x << '\n', exit(0);
#define fuck(x)                                cout << "(" << #x << " , " << x << ")" << endl
#define endl                                   '\n'

const int N = 3e5+23, lg = 19;
ll Mod = 1e9+7; //998244353;

inline ll MOD(ll a, ll mod=Mod) {a%=mod; (a<0)&&(a+=mod); return a;}
inline ll poww(ll a, ll b, ll mod=Mod) {
    ll ans = 1;
    a=MOD(a, mod);
    while (b) {
        if (b & 1) ans = MOD(ans*a, mod);
        b >>= 1;
        a = MOD(a*a, mod);
    }
    return ans;
}

struct node {
	int mx, pref, suff, res, sz;
	node() {
		mx = pref = suff = res = sz = 0;
	}
} seg[4*N];

int n, d, a[N], ans;
vector<int> comp, vec[N];

node merge(node x, node y) {
	x.mx = max(x.mx, y.mx);
	x.res = max({x.res, y.res, x.suff+y.pref});
	(x.pref == x.sz) && (x.pref += y.pref);
	(y.suff == y.sz) && (y.suff += x.suff);
	x.suff = y.suff;
	x.sz += y.sz;
	return x;
}

void update(int ind, int mx) {
	if(ind == 0) return;
	if(ind >= (1<<lg)) {
		seg[ind].pref = seg[ind].suff = seg[ind].res = 0;
		seg[ind].mx = mx;
	} else {
		seg[ind] = merge(seg[2*ind], seg[2*ind+1]);
	}
	update(ind/2, mx);
}

void build(int ind) {
	if(ind >= (1<<lg)) {
		seg[ind].sz = seg[ind].pref = seg[ind].suff = seg[ind].res = 1;
		return;
	}
	build(2*ind); build(2*ind+1);
	seg[ind] = merge(seg[2*ind], seg[2*ind+1]);
}

node glob;
void query(int x, int ind=1, int lc=1, int rc=(1<<lg)+1) {
	if(ind >= (1<<lg)) {
		node tmp = merge(seg[ind], glob);
		if(tmp.res <= d) glob = tmp;
		return;
	}
	int mid = (lc+rc)/2;
	if(x>=mid) {
		query(x, 2*ind+1, mid, rc);
		if(glob.sz == x-mid+1) {
			query(x, 2*ind, lc, mid);
		}
		return;
	}
	query(x, 2*ind, lc, mid);
}

int main () {
	ios_base::sync_with_stdio(false), cin.tie(0);

	cin>>n>>d;
	for(int i=1; i<=n; i++) cin>>a[i], comp.pb(a[i]);
	sort(all(comp));
	comp.resize(unique(all(comp)) - comp.begin());

	for(int i=1; i<=n; i++) {
		int ptr = lower_bound(all(comp), a[i]) - comp.begin() + 1;
		a[i] = ptr;
		vec[ptr].pb(i);
	}

	build(1);

	for(int i=1; i<=n; i++) {
		vector<int> reses;
		for(auto it : vec[i]) {
			glob = node();
			query(it);
			reses.pb(glob.mx+1);
		}
		for(int j=0; j<size(vec[i]); j++) {
			update(vec[i][j]+(1<<lg)-1, reses[j]);
		}
	}

	cout<<seg[1].mx<<endl;

	return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 20 ms 32088 KB Output is correct
2 Correct 19 ms 32092 KB Output is correct
3 Correct 19 ms 32092 KB Output is correct
4 Correct 20 ms 32088 KB Output is correct
5 Correct 19 ms 32088 KB Output is correct
6 Correct 19 ms 32088 KB Output is correct
7 Correct 21 ms 32092 KB Output is correct
8 Correct 19 ms 32088 KB Output is correct
9 Correct 20 ms 32092 KB Output is correct
10 Correct 19 ms 32088 KB Output is correct
11 Correct 19 ms 32088 KB Output is correct
12 Correct 19 ms 32088 KB Output is correct
13 Correct 19 ms 32088 KB Output is correct
14 Correct 19 ms 32092 KB Output is correct
15 Correct 24 ms 32088 KB Output is correct
16 Correct 18 ms 32088 KB Output is correct
17 Correct 19 ms 32088 KB Output is correct
18 Correct 19 ms 32092 KB Output is correct
19 Correct 19 ms 32088 KB Output is correct
20 Correct 19 ms 32092 KB Output is correct
21 Correct 18 ms 32088 KB Output is correct
22 Correct 19 ms 32092 KB Output is correct
23 Correct 18 ms 32088 KB Output is correct
24 Correct 18 ms 32088 KB Output is correct
25 Correct 20 ms 32092 KB Output is correct
26 Correct 19 ms 32092 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 20 ms 32088 KB Output is correct
2 Correct 19 ms 32092 KB Output is correct
3 Correct 19 ms 32092 KB Output is correct
4 Correct 20 ms 32088 KB Output is correct
5 Correct 19 ms 32088 KB Output is correct
6 Correct 19 ms 32088 KB Output is correct
7 Correct 21 ms 32092 KB Output is correct
8 Correct 19 ms 32088 KB Output is correct
9 Correct 20 ms 32092 KB Output is correct
10 Correct 19 ms 32088 KB Output is correct
11 Correct 19 ms 32088 KB Output is correct
12 Correct 19 ms 32088 KB Output is correct
13 Correct 19 ms 32088 KB Output is correct
14 Correct 19 ms 32092 KB Output is correct
15 Correct 24 ms 32088 KB Output is correct
16 Correct 18 ms 32088 KB Output is correct
17 Correct 19 ms 32088 KB Output is correct
18 Correct 19 ms 32092 KB Output is correct
19 Correct 19 ms 32088 KB Output is correct
20 Correct 19 ms 32092 KB Output is correct
21 Correct 18 ms 32088 KB Output is correct
22 Correct 19 ms 32092 KB Output is correct
23 Correct 18 ms 32088 KB Output is correct
24 Correct 18 ms 32088 KB Output is correct
25 Correct 20 ms 32092 KB Output is correct
26 Correct 19 ms 32092 KB Output is correct
27 Incorrect 19 ms 32092 KB Output isn't correct
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 20 ms 32088 KB Output is correct
2 Correct 19 ms 32092 KB Output is correct
3 Correct 19 ms 32092 KB Output is correct
4 Correct 20 ms 32088 KB Output is correct
5 Correct 19 ms 32088 KB Output is correct
6 Correct 19 ms 32088 KB Output is correct
7 Correct 21 ms 32092 KB Output is correct
8 Correct 19 ms 32088 KB Output is correct
9 Correct 20 ms 32092 KB Output is correct
10 Correct 19 ms 32088 KB Output is correct
11 Correct 19 ms 32088 KB Output is correct
12 Correct 19 ms 32088 KB Output is correct
13 Correct 19 ms 32088 KB Output is correct
14 Correct 19 ms 32092 KB Output is correct
15 Correct 24 ms 32088 KB Output is correct
16 Correct 18 ms 32088 KB Output is correct
17 Correct 19 ms 32088 KB Output is correct
18 Correct 19 ms 32092 KB Output is correct
19 Correct 19 ms 32088 KB Output is correct
20 Correct 19 ms 32092 KB Output is correct
21 Correct 18 ms 32088 KB Output is correct
22 Correct 19 ms 32092 KB Output is correct
23 Correct 18 ms 32088 KB Output is correct
24 Correct 18 ms 32088 KB Output is correct
25 Correct 20 ms 32092 KB Output is correct
26 Correct 19 ms 32092 KB Output is correct
27 Incorrect 19 ms 32092 KB Output isn't correct
28 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 160 ms 40412 KB Output is correct
2 Correct 221 ms 37864 KB Output is correct
3 Incorrect 1012 ms 38044 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 4016 ms 39620 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 20 ms 32088 KB Output is correct
2 Correct 19 ms 32092 KB Output is correct
3 Correct 19 ms 32092 KB Output is correct
4 Correct 20 ms 32088 KB Output is correct
5 Correct 19 ms 32088 KB Output is correct
6 Correct 19 ms 32088 KB Output is correct
7 Correct 21 ms 32092 KB Output is correct
8 Correct 19 ms 32088 KB Output is correct
9 Correct 20 ms 32092 KB Output is correct
10 Correct 19 ms 32088 KB Output is correct
11 Correct 19 ms 32088 KB Output is correct
12 Correct 19 ms 32088 KB Output is correct
13 Correct 19 ms 32088 KB Output is correct
14 Correct 19 ms 32092 KB Output is correct
15 Correct 24 ms 32088 KB Output is correct
16 Correct 18 ms 32088 KB Output is correct
17 Correct 19 ms 32088 KB Output is correct
18 Correct 19 ms 32092 KB Output is correct
19 Correct 19 ms 32088 KB Output is correct
20 Correct 19 ms 32092 KB Output is correct
21 Correct 18 ms 32088 KB Output is correct
22 Correct 19 ms 32092 KB Output is correct
23 Correct 18 ms 32088 KB Output is correct
24 Correct 18 ms 32088 KB Output is correct
25 Correct 20 ms 32092 KB Output is correct
26 Correct 19 ms 32092 KB Output is correct
27 Incorrect 19 ms 32092 KB Output isn't correct
28 Halted 0 ms 0 KB -