100402024-03-25 18:38:07111Növekvő Ödön és a Másoló Varázslócpp17Elfogadva 100/100230ms21052 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms2172 KiB
2Elfogadva52ms6160 KiB
subtask25/5
3Elfogadva54ms5788 KiB
4Elfogadva54ms5936 KiB
5Elfogadva54ms6160 KiB
subtask310/10
6Elfogadva3ms3396 KiB
7Elfogadva3ms3220 KiB
8Elfogadva3ms3092 KiB
subtask415/15
9Elfogadva3ms3364 KiB
10Elfogadva3ms3308 KiB
11Elfogadva3ms3308 KiB
12Elfogadva3ms3464 KiB
subtask55/5
13Elfogadva6ms4180 KiB
14Elfogadva6ms4048 KiB
15Elfogadva6ms4188 KiB
subtask65/5
16Elfogadva6ms4388 KiB
17Elfogadva4ms4424 KiB
18Elfogadva6ms4504 KiB
19Elfogadva4ms4388 KiB
subtask710/10
20Elfogadva7ms4420 KiB
21Elfogadva7ms4420 KiB
22Elfogadva7ms4552 KiB
23Elfogadva4ms4636 KiB
24Elfogadva7ms4996 KiB
subtask825/25
25Elfogadva94ms12592 KiB
26Elfogadva94ms12536 KiB
27Elfogadva94ms12536 KiB
28Elfogadva3ms4832 KiB
29Elfogadva109ms12632 KiB
30Elfogadva93ms11280 KiB
31Elfogadva94ms12176 KiB
32Elfogadva96ms12684 KiB
33Elfogadva100ms12652 KiB
34Elfogadva98ms12704 KiB
35Elfogadva101ms12652 KiB
36Elfogadva94ms12008 KiB
37Elfogadva96ms12632 KiB
38Elfogadva98ms12720 KiB
39Elfogadva109ms12964 KiB
40Elfogadva97ms13012 KiB
41Elfogadva100ms13016 KiB
42Elfogadva54ms9580 KiB
43Elfogadva94ms11848 KiB
44Elfogadva96ms12820 KiB
45Elfogadva97ms13000 KiB
subtask925/25
46Elfogadva196ms20520 KiB
47Elfogadva201ms20808 KiB
48Elfogadva194ms19248 KiB
49Elfogadva229ms21052 KiB
50Elfogadva229ms21024 KiB
51Elfogadva230ms20936 KiB
52Elfogadva165ms18504 KiB
53Elfogadva184ms19784 KiB
54Elfogadva201ms20824 KiB
55Elfogadva194ms20856 KiB