12612022-03-29 12:01:43vandrasNövekvő Ödön és a Másoló Varázslócpp14Time limit exceeded 0/100697ms54264 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];
vector<int> vals;

int get(int v){
	return lower_bound(vals.begin(), vals.end(), v) - vals.begin();
}

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

	sort(vals.begin(), vals.end());

	a[0] = -1;
	for(int i = 1; i <= n; ++i) a[i] = get(a[i]);
	for(int i = 1; i <= m; ++i) b[i] = get(b[i]);

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

	int mxN = vals.size();

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

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


	a[n+1] = INF;


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

		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
1Accepted3ms1884 KiB
2Time limit exceeded666ms2920 KiB
subtask20/5
3Wrong answer93ms7728 KiB
4Accepted90ms9668 KiB
5Accepted87ms11608 KiB
subtask30/10
6Accepted1ms8752 KiB
7Accepted1ms8756 KiB
8Wrong answer1ms8760 KiB
subtask40/15
9Wrong answer1ms8772 KiB
10Wrong answer1ms8780 KiB
11Wrong answer1ms8784 KiB
12Accepted1ms8796 KiB
subtask50/5
13Wrong answer4ms9024 KiB
14Accepted4ms9120 KiB
15Wrong answer4ms9224 KiB
subtask60/5
16Accepted24ms9320 KiB
17Wrong answer18ms9424 KiB
18Wrong answer10ms9524 KiB
19Accepted17ms9628 KiB
subtask70/10
20Wrong answer8ms9696 KiB
21Wrong answer8ms9804 KiB
22Accepted18ms9908 KiB
23Wrong answer6ms9964 KiB
24Wrong answer6ms10060 KiB
subtask80/25
25Time limit exceeded652ms12664 KiB
26Time limit exceeded623ms14548 KiB
27Time limit exceeded671ms16544 KiB
28Accepted1ms15772 KiB
29Time limit exceeded694ms18432 KiB
30Wrong answer104ms23504 KiB
31Wrong answer109ms25440 KiB
32Wrong answer214ms27288 KiB
33Wrong answer474ms29228 KiB
34Wrong answer365ms31196 KiB
35Time limit exceeded601ms33196 KiB
36Wrong answer272ms35144 KiB
37Wrong answer246ms36980 KiB
38Time limit exceeded679ms35928 KiB
39Time limit exceeded684ms37916 KiB
40Time limit exceeded694ms39844 KiB
41Time limit exceeded694ms41860 KiB
42Wrong answer50ms44376 KiB
43Time limit exceeded616ms44940 KiB
44Wrong answer162ms40128 KiB
45Time limit exceeded620ms31312 KiB
subtask90/25
46Time limit exceeded614ms36588 KiB
47Time limit exceeded615ms33664 KiB
48Wrong answer430ms42312 KiB
49Time limit exceeded602ms40996 KiB
50Time limit exceeded601ms44696 KiB
51Time limit exceeded601ms39504 KiB
52Wrong answer400ms46940 KiB
53Time limit exceeded690ms46672 KiB
54Time limit exceeded697ms50624 KiB
55Time limit exceeded689ms54264 KiB