12622022-03-29 12:02:55vandrasNövekvő Ödön és a Másoló Varázslócpp14Időlimit túllépés 0/100695ms86904 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;
		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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1932 KiB
2Időlimit túllépés656ms2400 KiB
subtask20/5
3Hibás válasz39ms6388 KiB
4Elfogadva41ms8328 KiB
5Elfogadva46ms10272 KiB
subtask30/10
6Elfogadva2ms8768 KiB
7Elfogadva1ms8768 KiB
8Hibás válasz1ms8776 KiB
subtask40/15
9Hibás válasz2ms8784 KiB
10Hibás válasz1ms8788 KiB
11Hibás válasz1ms8796 KiB
12Elfogadva2ms8800 KiB
subtask50/5
13Hibás válasz3ms8992 KiB
14Elfogadva3ms9096 KiB
15Hibás válasz4ms9192 KiB
subtask60/5
16Elfogadva24ms9296 KiB
17Hibás válasz14ms9392 KiB
18Hibás válasz8ms9492 KiB
19Elfogadva14ms9600 KiB
subtask70/10
20Hibás válasz7ms9668 KiB
21Hibás válasz8ms9780 KiB
22Elfogadva19ms9872 KiB
23Hibás válasz6ms9952 KiB
24Hibás válasz4ms10032 KiB
subtask80/25
25Időlimit túllépés690ms11792 KiB
26Időlimit túllépés694ms13728 KiB
27Időlimit túllépés675ms15732 KiB
28Elfogadva1ms15760 KiB
29Időlimit túllépés652ms17652 KiB
30Hibás válasz76ms21936 KiB
31Hibás válasz59ms23876 KiB
32Hibás válasz179ms25788 KiB
33Hibás válasz416ms27784 KiB
34Hibás válasz307ms29680 KiB
35Hibás válasz518ms31620 KiB
36Hibás válasz190ms33564 KiB
37Hibás válasz216ms35512 KiB
38Időlimit túllépés694ms35260 KiB
39Időlimit túllépés694ms36984 KiB
40Időlimit túllépés686ms39172 KiB
41Időlimit túllépés695ms41088 KiB
42Hibás válasz28ms43528 KiB
43Időlimit túllépés667ms44164 KiB
44Hibás válasz116ms48304 KiB
45Időlimit túllépés694ms48052 KiB
subtask90/25
46Időlimit túllépés694ms52776 KiB
47Időlimit túllépés694ms56888 KiB
48Hibás válasz333ms64148 KiB
49Időlimit túllépés689ms64252 KiB
50Időlimit túllépés676ms68184 KiB
51Időlimit túllépés693ms72108 KiB
52Hibás válasz287ms78452 KiB
53Hibás válasz586ms82496 KiB
54Időlimit túllépés693ms83280 KiB
55Időlimit túllépés658ms86904 KiB