12652022-03-29 12:08:18vandrasNövekvő Ödön és a Másoló Varázslócpp14Hibás válasz 25/100694ms56180 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-1] < INF){
			dp[i] = dp[i-1];
			continue;
		}
		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
1Elfogadva2ms1896 KiB
2Hibás válasz345ms4112 KiB
subtask25/5
3Elfogadva43ms6380 KiB
4Elfogadva41ms8308 KiB
5Elfogadva43ms10252 KiB
subtask310/10
6Elfogadva1ms8752 KiB
7Elfogadva1ms8748 KiB
8Elfogadva1ms8752 KiB
subtask40/15
9Hibás válasz1ms8768 KiB
10Hibás válasz1ms8772 KiB
11Hibás válasz2ms8780 KiB
12Elfogadva1ms8788 KiB
subtask55/5
13Elfogadva3ms8984 KiB
14Elfogadva3ms9076 KiB
15Elfogadva3ms9176 KiB
subtask65/5
16Elfogadva17ms9280 KiB
17Elfogadva4ms9380 KiB
18Elfogadva6ms9480 KiB
19Elfogadva13ms9576 KiB
subtask70/10
20Hibás válasz3ms9652 KiB
21Hibás válasz6ms9756 KiB
22Elfogadva16ms9860 KiB
23Hibás válasz3ms9804 KiB
24Hibás válasz4ms10024 KiB
subtask80/25
25Időlimit túllépés607ms11768 KiB
26Időlimit túllépés694ms13720 KiB
27Időlimit túllépés681ms15652 KiB
28Elfogadva1ms15768 KiB
29Időlimit túllépés694ms17716 KiB
30Hibás válasz41ms21924 KiB
31Hibás válasz43ms23860 KiB
32Hibás válasz79ms25796 KiB
33Hibás válasz409ms27748 KiB
34Hibás válasz268ms29748 KiB
35Hibás válasz522ms31608 KiB
36Hibás válasz45ms33548 KiB
37Hibás válasz83ms35492 KiB
38Időlimit túllépés656ms35220 KiB
39Időlimit túllépés666ms37116 KiB
40Időlimit túllépés693ms39048 KiB
41Időlimit túllépés628ms41080 KiB
42Hibás válasz28ms43428 KiB
43Hibás válasz43ms46340 KiB
44Hibás válasz54ms48336 KiB
45Hibás válasz270ms50280 KiB
subtask90/25
46Hibás válasz188ms56180 KiB
47Időlimit túllépés643ms43832 KiB
48Hibás válasz86ms39328 KiB
49Időlimit túllépés615ms42216 KiB
50Időlimit túllépés652ms43356 KiB
51Időlimit túllépés615ms37980 KiB
52Hibás válasz328ms44392 KiB
53Időlimit túllépés616ms45248 KiB
54Időlimit túllépés638ms49200 KiB
55Időlimit túllépés638ms52404 KiB