Submission #1110745

#TimeUsernameProblemLanguageResultExecution timeMemory
1110745starchanArcade (NOI20_arcade)C++17
100 / 100
148 ms28476 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define in array<int, 2>
#define pb push_back
#define pob pop_back
#define fast() ios_base::sync_with_stdio(false); cin.tie(NULL)

const int INF = 1e17;

int LIS(vector<int> v)
{
	int N = v.size();
	vector<int> d(N+2, INF);
	d[0] = -INF;
	for(auto x: v)
	{
		int l = lower_bound(d.begin(), d.end(), x)-d.begin();
		if((d[l-1] < x) && (x < d[l]))
			d[l] = x;
	}
	int s = 0;
	while(d[s] != INF)
		s++;
	return --s;
}

signed main()
{
	fast();
	int M, n; cin >> M >> n;
	vector<in> ab(n);
	for(int i = 0; i < n; i++)
	{
		int t; cin >> t;
		ab[i] = {t, t};
	}
	for(int i = 0; i < n; i++)
	{
		int t; cin >> t;
		ab[i][0]-=t; ab[i][1]+=t;
	}
	sort(ab.begin(), ab.end());
	vector<int> v;
	for(int i = 0; i < n; i++)
		v.pb(ab[n-1-i][1]);
	cout << LIS(v) << "\n";
	return 0;
}	
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...