12682022-03-29 12:34:23vandrasNövekvő Ödön és a Másoló Varázslócpp14Wrong answer 25/100698ms67976 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] = dp[i-1];
		}

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

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

	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted2ms1912 KiB
2Wrong answer358ms4044 KiB
subtask25/5
3Accepted39ms6384 KiB
4Accepted45ms8316 KiB
5Accepted41ms10268 KiB
subtask310/10
6Accepted1ms8760 KiB
7Accepted1ms8760 KiB
8Accepted1ms8764 KiB
subtask40/15
9Wrong answer1ms8772 KiB
10Wrong answer1ms8776 KiB
11Wrong answer1ms8792 KiB
12Accepted1ms8792 KiB
subtask55/5
13Accepted3ms8988 KiB
14Accepted3ms9084 KiB
15Accepted3ms9184 KiB
subtask65/5
16Accepted35ms9284 KiB
17Accepted18ms9384 KiB
18Accepted12ms9484 KiB
19Accepted17ms9588 KiB
subtask70/10
20Wrong answer3ms9660 KiB
21Wrong answer6ms9756 KiB
22Accepted17ms9856 KiB
23Wrong answer3ms9940 KiB
24Wrong answer4ms10028 KiB
subtask80/25
25Time limit exceeded609ms11792 KiB
26Time limit exceeded651ms13720 KiB
27Time limit exceeded606ms15720 KiB
28Accepted1ms15732 KiB
29Time limit exceeded601ms17656 KiB
30Wrong answer50ms21916 KiB
31Wrong answer50ms23848 KiB
32Wrong answer90ms25776 KiB
33Wrong answer393ms27732 KiB
34Wrong answer282ms29608 KiB
35Wrong answer518ms31584 KiB
36Wrong answer59ms33512 KiB
37Wrong answer104ms35500 KiB
38Time limit exceeded698ms35132 KiB
39Time limit exceeded685ms36964 KiB
40Time limit exceeded694ms38904 KiB
41Time limit exceeded694ms40940 KiB
42Wrong answer27ms43304 KiB
43Wrong answer61ms46260 KiB
44Wrong answer65ms48188 KiB
45Wrong answer280ms50140 KiB
subtask90/25
46Wrong answer218ms56292 KiB
47Time limit exceeded693ms56888 KiB
48Wrong answer109ms64100 KiB
49Time limit exceeded648ms64156 KiB
50Time limit exceeded603ms67976 KiB
51Time limit exceeded649ms45496 KiB
52Wrong answer333ms42348 KiB
53Time limit exceeded617ms43332 KiB
54Time limit exceeded616ms47276 KiB
55Time limit exceeded638ms50764 KiB