12652022-03-29 12:08:18vandrasNövekvő Ödön és a Másoló Varázslócpp14Wrong answer 25/100694ms56180 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] = INF;
		int bpos = lower_bound(b+1, b+m+1, a[i])-b-1;


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

		}
	}

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

	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted2ms1896 KiB
2Wrong answer345ms4112 KiB
subtask25/5
3Accepted43ms6380 KiB
4Accepted41ms8308 KiB
5Accepted43ms10252 KiB
subtask310/10
6Accepted1ms8752 KiB
7Accepted1ms8748 KiB
8Accepted1ms8752 KiB
subtask40/15
9Wrong answer1ms8768 KiB
10Wrong answer1ms8772 KiB
11Wrong answer2ms8780 KiB
12Accepted1ms8788 KiB
subtask55/5
13Accepted3ms8984 KiB
14Accepted3ms9076 KiB
15Accepted3ms9176 KiB
subtask65/5
16Accepted17ms9280 KiB
17Accepted4ms9380 KiB
18Accepted6ms9480 KiB
19Accepted13ms9576 KiB
subtask70/10
20Wrong answer3ms9652 KiB
21Wrong answer6ms9756 KiB
22Accepted16ms9860 KiB
23Wrong answer3ms9804 KiB
24Wrong answer4ms10024 KiB
subtask80/25
25Time limit exceeded607ms11768 KiB
26Time limit exceeded694ms13720 KiB
27Time limit exceeded681ms15652 KiB
28Accepted1ms15768 KiB
29Time limit exceeded694ms17716 KiB
30Wrong answer41ms21924 KiB
31Wrong answer43ms23860 KiB
32Wrong answer79ms25796 KiB
33Wrong answer409ms27748 KiB
34Wrong answer268ms29748 KiB
35Wrong answer522ms31608 KiB
36Wrong answer45ms33548 KiB
37Wrong answer83ms35492 KiB
38Time limit exceeded656ms35220 KiB
39Time limit exceeded666ms37116 KiB
40Time limit exceeded693ms39048 KiB
41Time limit exceeded628ms41080 KiB
42Wrong answer28ms43428 KiB
43Wrong answer43ms46340 KiB
44Wrong answer54ms48336 KiB
45Wrong answer270ms50280 KiB
subtask90/25
46Wrong answer188ms56180 KiB
47Time limit exceeded643ms43832 KiB
48Wrong answer86ms39328 KiB
49Time limit exceeded615ms42216 KiB
50Time limit exceeded652ms43356 KiB
51Time limit exceeded615ms37980 KiB
52Wrong answer328ms44392 KiB
53Time limit exceeded616ms45248 KiB
54Time limit exceeded638ms49200 KiB
55Time limit exceeded638ms52404 KiB