12562022-03-29 11:09:56vandrasNövekvő Ödön és a Másoló Varázslócpp14Időlimit túllépés 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva2ms1948 KiB
2Időlimit túllépés671ms151976 KiB
subtask20/5
3Hibás válasz97ms8620 KiB
4Elfogadva90ms10552 KiB
5Elfogadva90ms12500 KiB
subtask30/10
6Hibás válasz1ms8028 KiB
7Hibás válasz1ms8160 KiB
8Hibás válasz1ms8032 KiB
subtask40/15
9Hibás válasz4ms11480 KiB
10Hibás válasz3ms11484 KiB
11Hibás válasz3ms10820 KiB
12Hibás válasz4ms11508 KiB
subtask50/5
13Hibás válasz179ms337452 KiB
14Hibás válasz179ms337588 KiB
15Hibás válasz202ms337664 KiB
subtask60/5
16Hibás válasz185ms335048 KiB
17Hibás válasz201ms333352 KiB
18Hibás válasz174ms333408 KiB
19Hibás válasz175ms333460 KiB
subtask70/10
20Hibás válasz171ms333620 KiB
21Hibás válasz197ms333640 KiB
22Hibás válasz179ms333872 KiB
23Hibás válasz68ms134264 KiB
24Hibás válasz170ms314820 KiB
subtask80/25
25Időlimit túllépés680ms85532 KiB
26Időlimit túllépés632ms85056 KiB
27Időlimit túllépés625ms85548 KiB
28Elfogadva1ms10372 KiB
29Időlimit túllépés699ms93676 KiB
30Időlimit túllépés610ms83248 KiB
31Időlimit túllépés652ms88356 KiB
32Időlimit túllépés609ms73108 KiB
33Időlimit túllépés661ms76092 KiB
34Időlimit túllépés607ms82728 KiB
35Időlimit túllépés611ms82660 KiB
36Időlimit túllépés621ms82432 KiB
37Időlimit túllépés607ms81720 KiB
38Időlimit túllépés607ms82672 KiB
39Időlimit túllépés633ms87228 KiB
40Időlimit túllépés699ms97952 KiB
41Időlimit túllépés663ms91180 KiB
42Időlimit túllépés666ms126100 KiB
43Időlimit túllépés702ms92400 KiB
44Időlimit túllépés694ms95024 KiB
45Időlimit túllépés699ms98164 KiB
subtask90/25
46Időlimit túllépés694ms57840 KiB
47Időlimit túllépés699ms60884 KiB
48Időlimit túllépés695ms63544 KiB
49Időlimit túllépés697ms66712 KiB
50Időlimit túllépés679ms67876 KiB
51Időlimit túllépés699ms74792 KiB
52Időlimit túllépés698ms83796 KiB
53Időlimit túllépés672ms84272 KiB
54Időlimit túllépés697ms86388 KiB
55Időlimit túllépés699ms92016 KiB