12562022-03-29 11:09:56vandrasNövekvő Ödön és a Másoló Varázslócpp14Time limit exceeded 0/100702ms337664 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[M][2*M];
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 = 0; i < n; ++i){
		cin >> a[i];
		vals[i] = a[i];
	}
	for(int i = 0; i < m; ++i){
		cin >> b[i];
		vals[n+i] = b[i];
	}

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

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

	sort(b, b+m);
	int mxN = vals.size();

	//dp[i][j] : min to have first i elements good and the ith element is b[j] where (b[m] = a[i])

	dp[0][0] = (a[0] != 0);
	for(int j = 1; j < mxN; ++j){
		dp[0][j] = min(dp[0][j-1], (int)(a[0] != j));
	}

	for(int i = 1; i < n; ++i){
		dp[i][i] = dp[i-1][i-1] + (a[i] != i);
		for(int j = i+1; j < mxN; ++j){
			dp[i][j] = min(dp[i][j-1], dp[i-1][j-1] + (a[i] != j)); 
		}
	}

	cout << dp[n-1][mxN-1] << '\n';

	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted2ms1948 KiB
2Time limit exceeded671ms151976 KiB
subtask20/5
3Wrong answer97ms8620 KiB
4Accepted90ms10552 KiB
5Accepted90ms12500 KiB
subtask30/10
6Wrong answer1ms8028 KiB
7Wrong answer1ms8160 KiB
8Wrong answer1ms8032 KiB
subtask40/15
9Wrong answer4ms11480 KiB
10Wrong answer3ms11484 KiB
11Wrong answer3ms10820 KiB
12Wrong answer4ms11508 KiB
subtask50/5
13Wrong answer179ms337452 KiB
14Wrong answer179ms337588 KiB
15Wrong answer202ms337664 KiB
subtask60/5
16Wrong answer185ms335048 KiB
17Wrong answer201ms333352 KiB
18Wrong answer174ms333408 KiB
19Wrong answer175ms333460 KiB
subtask70/10
20Wrong answer171ms333620 KiB
21Wrong answer197ms333640 KiB
22Wrong answer179ms333872 KiB
23Wrong answer68ms134264 KiB
24Wrong answer170ms314820 KiB
subtask80/25
25Time limit exceeded680ms85532 KiB
26Time limit exceeded632ms85056 KiB
27Time limit exceeded625ms85548 KiB
28Accepted1ms10372 KiB
29Time limit exceeded699ms93676 KiB
30Time limit exceeded610ms83248 KiB
31Time limit exceeded652ms88356 KiB
32Time limit exceeded609ms73108 KiB
33Time limit exceeded661ms76092 KiB
34Time limit exceeded607ms82728 KiB
35Time limit exceeded611ms82660 KiB
36Time limit exceeded621ms82432 KiB
37Time limit exceeded607ms81720 KiB
38Time limit exceeded607ms82672 KiB
39Time limit exceeded633ms87228 KiB
40Time limit exceeded699ms97952 KiB
41Time limit exceeded663ms91180 KiB
42Time limit exceeded666ms126100 KiB
43Time limit exceeded702ms92400 KiB
44Time limit exceeded694ms95024 KiB
45Time limit exceeded699ms98164 KiB
subtask90/25
46Time limit exceeded694ms57840 KiB
47Time limit exceeded699ms60884 KiB
48Time limit exceeded695ms63544 KiB
49Time limit exceeded697ms66712 KiB
50Time limit exceeded679ms67876 KiB
51Time limit exceeded699ms74792 KiB
52Time limit exceeded698ms83796 KiB
53Time limit exceeded672ms84272 KiB
54Time limit exceeded697ms86388 KiB
55Time limit exceeded699ms92016 KiB