12662022-03-29 12:13:40vandrasNövekvő Ödön és a Másoló Varázslócpp14Wrong answer 0/100691ms90412 KiB
#include <bits/stdc++.h>
using namespace std;

/*<DEBUG>*/
#define tem template <typename 
#define can_shift(_X_, ...) enable_if_t<sizeof test<_X_>(0) __VA_ARGS__ 8, debug&> operator<<(T i)
#define _op debug& operator<<
tem C > auto test(C *x) -> decltype(cerr << *x, 0LL);
tem C > char test(...);
tem C > struct itr{C begin, end; };
tem C > itr<C> get_range(C b, C e) { return itr<C>{b, e}; }
struct debug{
#ifdef _LOCAL
	~debug(){ cerr << endl; }
	tem T > can_shift(T, ==){ cerr << boolalpha << i; return *this; }
	tem T> can_shift(T, !=){ return *this << get_range(begin(i), end(i)); }
	tem T, typename U > _op (pair<T, U> i){ 
		return *this << "< " << i.first << " , " << i.second << " >"; }
	tem T> _op (itr<T> i){
		*this <<  "{ ";
		for(auto it = i.begin; it != i.end; it++){
			*this << " , " + (it==i.begin?2:0) << *it;
		}
		return *this << " }";
	}
#else
tem T> _op (const T&) { return *this; }
#endif 
};

tem T>
string _ARR_(T* arr, int sz){
	string ret = "{ " + to_string(arr[0]); 
	for(int i = 1; i < sz; i++) ret += " , " +  to_string(arr[i]);
	ret += " }"; return ret;
}

#define exp(...) " [ " << #__VA_ARGS__ << " : " << (__VA_ARGS__) << " ]"
/*</DEBUG>*/

typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef unsigned int uint;
typedef pair<int, int> pii;
//mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

#define pb push_back
#define FAST ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0)
#define TC int __TC__; cin >> __TC__; while(__TC__--)
#define ar array

const int INF = 1e9 + 7, N = 200005, M = 5003;

int a[N], b[N], n, m, dp[N];

int main()
{
	FAST;
	cin >> n >> m;
	for(int i = 1; i <= n; ++i){
		cin >> a[i];
	}
	for(int i = 1; i <= m; ++i){
		cin >> b[i];
	}

	sort(b+1, b+m+1);

	//dp[i] : best solution up to ith element (ith is left unchanged)

	a[0] = -1;
	a[n+1] = INF;

	dp[0] = 0;
	dp[1] = 0;

	for(int i = 2; i <= n+1; ++i){
		dp[i] = dp[i-1] + 1;
		int bpos = lower_bound(b+1, b+m+1, a[i])-b-1;


		if(a[i-1] < a[i]){
			dp[i] = dp[i-1];
			continue;
		}

		for(int j = i-1; j > 0 && bpos > 0; --j, --bpos){
			if(a[j-1] < b[bpos]){
				dp[i] = dp[j-1] + (i-j);
				break;
			}

		}
	}

	cout << min(dp[n], dp[n+1]) << '\n';

	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted2ms1888 KiB
2Wrong answer21ms4072 KiB
subtask20/5
3Accepted41ms6384 KiB
4Accepted54ms8316 KiB
5Wrong answer45ms10264 KiB
subtask30/10
6Wrong answer1ms8752 KiB
7Wrong answer1ms8756 KiB
8Wrong answer1ms8764 KiB
subtask40/15
9Wrong answer1ms8772 KiB
10Wrong answer2ms8776 KiB
11Wrong answer2ms8792 KiB
12Wrong answer2ms8800 KiB
subtask50/5
13Wrong answer3ms8988 KiB
14Wrong answer3ms9088 KiB
15Wrong answer4ms9188 KiB
subtask60/5
16Wrong answer3ms9288 KiB
17Wrong answer3ms9388 KiB
18Wrong answer3ms9484 KiB
19Accepted14ms9588 KiB
subtask70/10
20Wrong answer3ms9656 KiB
21Wrong answer3ms9768 KiB
22Wrong answer3ms9872 KiB
23Wrong answer2ms9940 KiB
24Wrong answer4ms10028 KiB
subtask80/25
25Time limit exceeded672ms11840 KiB
26Time limit exceeded660ms13752 KiB
27Time limit exceeded691ms15744 KiB
28Accepted1ms15744 KiB
29Wrong answer52ms19996 KiB
30Wrong answer41ms21924 KiB
31Wrong answer39ms23868 KiB
32Wrong answer41ms25812 KiB
33Wrong answer41ms27736 KiB
34Wrong answer45ms29680 KiB
35Wrong answer46ms31616 KiB
36Wrong answer54ms33552 KiB
37Wrong answer39ms35492 KiB
38Wrong answer46ms37404 KiB
39Wrong answer56ms39376 KiB
40Wrong answer43ms41232 KiB
41Wrong answer41ms43212 KiB
42Wrong answer23ms43388 KiB
43Wrong answer39ms46348 KiB
44Wrong answer39ms48284 KiB
45Wrong answer43ms50220 KiB
subtask90/25
46Wrong answer85ms56384 KiB
47Wrong answer83ms60264 KiB
48Wrong answer86ms64136 KiB
49Wrong answer109ms68052 KiB
50Wrong answer107ms71872 KiB
51Wrong answer115ms75852 KiB
52Wrong answer76ms78460 KiB
53Wrong answer81ms82460 KiB
54Wrong answer87ms86636 KiB
55Wrong answer108ms90412 KiB