12682022-03-29 12:34:23vandrasNövekvő Ödön és a Másoló Varázslócpp14Hibás válasz 25/100698ms67976 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] = dp[i-1];
		}

		for(int j = i-1; j > 0 && bpos > 0; --j, --bpos){
			if(a[j-1] < b[bpos] && dp[j-1] < INF){
				dp[i] = min(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
1Elfogadva2ms1912 KiB
2Hibás válasz358ms4044 KiB
subtask25/5
3Elfogadva39ms6384 KiB
4Elfogadva45ms8316 KiB
5Elfogadva41ms10268 KiB
subtask310/10
6Elfogadva1ms8760 KiB
7Elfogadva1ms8760 KiB
8Elfogadva1ms8764 KiB
subtask40/15
9Hibás válasz1ms8772 KiB
10Hibás válasz1ms8776 KiB
11Hibás válasz1ms8792 KiB
12Elfogadva1ms8792 KiB
subtask55/5
13Elfogadva3ms8988 KiB
14Elfogadva3ms9084 KiB
15Elfogadva3ms9184 KiB
subtask65/5
16Elfogadva35ms9284 KiB
17Elfogadva18ms9384 KiB
18Elfogadva12ms9484 KiB
19Elfogadva17ms9588 KiB
subtask70/10
20Hibás válasz3ms9660 KiB
21Hibás válasz6ms9756 KiB
22Elfogadva17ms9856 KiB
23Hibás válasz3ms9940 KiB
24Hibás válasz4ms10028 KiB
subtask80/25
25Időlimit túllépés609ms11792 KiB
26Időlimit túllépés651ms13720 KiB
27Időlimit túllépés606ms15720 KiB
28Elfogadva1ms15732 KiB
29Időlimit túllépés601ms17656 KiB
30Hibás válasz50ms21916 KiB
31Hibás válasz50ms23848 KiB
32Hibás válasz90ms25776 KiB
33Hibás válasz393ms27732 KiB
34Hibás válasz282ms29608 KiB
35Hibás válasz518ms31584 KiB
36Hibás válasz59ms33512 KiB
37Hibás válasz104ms35500 KiB
38Időlimit túllépés698ms35132 KiB
39Időlimit túllépés685ms36964 KiB
40Időlimit túllépés694ms38904 KiB
41Időlimit túllépés694ms40940 KiB
42Hibás válasz27ms43304 KiB
43Hibás válasz61ms46260 KiB
44Hibás válasz65ms48188 KiB
45Hibás válasz280ms50140 KiB
subtask90/25
46Hibás válasz218ms56292 KiB
47Időlimit túllépés693ms56888 KiB
48Hibás válasz109ms64100 KiB
49Időlimit túllépés648ms64156 KiB
50Időlimit túllépés603ms67976 KiB
51Időlimit túllépés649ms45496 KiB
52Hibás válasz333ms42348 KiB
53Időlimit túllépés617ms43332 KiB
54Időlimit túllépés616ms47276 KiB
55Időlimit túllépés638ms50764 KiB