12662022-03-29 12:13:40vandrasNövekvő Ödön és a Másoló Varázslócpp14Hibás válasz 0/100691ms90412 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] = dp[i-1] + 1;
		int bpos = lower_bound(b+1, b+m+1, a[i])-b-1;


		if(a[i-1] < a[i]){
			dp[i] = dp[i-1];
			continue;
		}

		for(int j = i-1; j > 0 && bpos > 0; --j, --bpos){
			if(a[j-1] < b[bpos]){
				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
1Elfogadva2ms1888 KiB
2Hibás válasz21ms4072 KiB
subtask20/5
3Elfogadva41ms6384 KiB
4Elfogadva54ms8316 KiB
5Hibás válasz45ms10264 KiB
subtask30/10
6Hibás válasz1ms8752 KiB
7Hibás válasz1ms8756 KiB
8Hibás válasz1ms8764 KiB
subtask40/15
9Hibás válasz1ms8772 KiB
10Hibás válasz2ms8776 KiB
11Hibás válasz2ms8792 KiB
12Hibás válasz2ms8800 KiB
subtask50/5
13Hibás válasz3ms8988 KiB
14Hibás válasz3ms9088 KiB
15Hibás válasz4ms9188 KiB
subtask60/5
16Hibás válasz3ms9288 KiB
17Hibás válasz3ms9388 KiB
18Hibás válasz3ms9484 KiB
19Elfogadva14ms9588 KiB
subtask70/10
20Hibás válasz3ms9656 KiB
21Hibás válasz3ms9768 KiB
22Hibás válasz3ms9872 KiB
23Hibás válasz2ms9940 KiB
24Hibás válasz4ms10028 KiB
subtask80/25
25Időlimit túllépés672ms11840 KiB
26Időlimit túllépés660ms13752 KiB
27Időlimit túllépés691ms15744 KiB
28Elfogadva1ms15744 KiB
29Hibás válasz52ms19996 KiB
30Hibás válasz41ms21924 KiB
31Hibás válasz39ms23868 KiB
32Hibás válasz41ms25812 KiB
33Hibás válasz41ms27736 KiB
34Hibás válasz45ms29680 KiB
35Hibás válasz46ms31616 KiB
36Hibás válasz54ms33552 KiB
37Hibás válasz39ms35492 KiB
38Hibás válasz46ms37404 KiB
39Hibás válasz56ms39376 KiB
40Hibás válasz43ms41232 KiB
41Hibás válasz41ms43212 KiB
42Hibás válasz23ms43388 KiB
43Hibás válasz39ms46348 KiB
44Hibás válasz39ms48284 KiB
45Hibás válasz43ms50220 KiB
subtask90/25
46Hibás válasz85ms56384 KiB
47Hibás válasz83ms60264 KiB
48Hibás válasz86ms64136 KiB
49Hibás válasz109ms68052 KiB
50Hibás válasz107ms71872 KiB
51Hibás válasz115ms75852 KiB
52Hibás válasz76ms78460 KiB
53Hibás válasz81ms82460 KiB
54Hibás válasz87ms86636 KiB
55Hibás válasz108ms90412 KiB