10040 2024. 03. 25 18:38:07 111 Növekvő Ödön és a Másoló Varázsló cpp17 Elfogadva 100/100 230ms 21052 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long

#define INF 999999

int N,M;
int F[1000000];

void add(int i,int x){
	for(i++;i<1000000;i+=i&-i){
		F[i]+=x;
	}
}

void add(int i,int j,int x){
	add(i,x);
	add(j+1,-x);
}

int get(int i){
	int x=0;
	for(i++;i;i-=i&-i){
		x+=F[i];
	}
	return x;
}

void sset(int i,int x){
	add(i,i,x-get(i));
}

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	cin>>N>>M;
	vector<int>v(N+1),w(M),u(N+1);
	for(int i=1;i<=N;i++){
		cin>>v[i];
	}
	for(int i=0;i<M;i++){
		cin>>w[i];
	}
	sort(w.begin(),w.end());
	for(int i=1;i<=N;i++){
		u[i]=upper_bound(w.begin(),w.end(),v[i])-w.begin();
	}
	int a=0,l=0,h=500000;
	add(0,h-1,INF);
	h++;
	for(int i=1;i<=N;i++){
		int aa=INF;
		int j=u[i]-1;
		if(j>=l){
			aa=min(aa,get(h+j));
		}
		h--;
		if(w[l]>v[i-1]&&a<INF){
			sset(h+l,get(h+l+1));
		}
		else{
			l++;
		}
		int ll=u[i-1],hh=M;
		while(ll<hh){
			int mm=(ll+hh)/2;
			if(get(h+mm)<=a){
				hh=mm;
			}
			else{
				ll=mm+1;
			}
		}
		add(h+l,h+u[i-1]-1,1);
		if(a+1<get(h+u[i-1])){
			sset(h+u[i-1],a+1);
		}
		add(h+ll,h+M-1,1);
		if(v[i]>v[i-1]){
			aa=min(aa,a);
		}
		a=aa;
	}
	for(int i=l;i<M;i++){
		a=min(a,get(h+i));
	}
	cout<<a<<'\n';
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 2172 KiB
2 Elfogadva 52ms 6160 KiB
subtask2 5/5
3 Elfogadva 54ms 5788 KiB
4 Elfogadva 54ms 5936 KiB
5 Elfogadva 54ms 6160 KiB
subtask3 10/10
6 Elfogadva 3ms 3396 KiB
7 Elfogadva 3ms 3220 KiB
8 Elfogadva 3ms 3092 KiB
subtask4 15/15
9 Elfogadva 3ms 3364 KiB
10 Elfogadva 3ms 3308 KiB
11 Elfogadva 3ms 3308 KiB
12 Elfogadva 3ms 3464 KiB
subtask5 5/5
13 Elfogadva 6ms 4180 KiB
14 Elfogadva 6ms 4048 KiB
15 Elfogadva 6ms 4188 KiB
subtask6 5/5
16 Elfogadva 6ms 4388 KiB
17 Elfogadva 4ms 4424 KiB
18 Elfogadva 6ms 4504 KiB
19 Elfogadva 4ms 4388 KiB
subtask7 10/10
20 Elfogadva 7ms 4420 KiB
21 Elfogadva 7ms 4420 KiB
22 Elfogadva 7ms 4552 KiB
23 Elfogadva 4ms 4636 KiB
24 Elfogadva 7ms 4996 KiB
subtask8 25/25
25 Elfogadva 94ms 12592 KiB
26 Elfogadva 94ms 12536 KiB
27 Elfogadva 94ms 12536 KiB
28 Elfogadva 3ms 4832 KiB
29 Elfogadva 109ms 12632 KiB
30 Elfogadva 93ms 11280 KiB
31 Elfogadva 94ms 12176 KiB
32 Elfogadva 96ms 12684 KiB
33 Elfogadva 100ms 12652 KiB
34 Elfogadva 98ms 12704 KiB
35 Elfogadva 101ms 12652 KiB
36 Elfogadva 94ms 12008 KiB
37 Elfogadva 96ms 12632 KiB
38 Elfogadva 98ms 12720 KiB
39 Elfogadva 109ms 12964 KiB
40 Elfogadva 97ms 13012 KiB
41 Elfogadva 100ms 13016 KiB
42 Elfogadva 54ms 9580 KiB
43 Elfogadva 94ms 11848 KiB
44 Elfogadva 96ms 12820 KiB
45 Elfogadva 97ms 13000 KiB
subtask9 25/25
46 Elfogadva 196ms 20520 KiB
47 Elfogadva 201ms 20808 KiB
48 Elfogadva 194ms 19248 KiB
49 Elfogadva 229ms 21052 KiB
50 Elfogadva 229ms 21024 KiB
51 Elfogadva 230ms 20936 KiB
52 Elfogadva 165ms 18504 KiB
53 Elfogadva 184ms 19784 KiB
54 Elfogadva 201ms 20824 KiB
55 Elfogadva 194ms 20856 KiB