#include <iostream>
#include <algorithm>
#include <cstdint>
#include <fstream>
#define cin f
#define cout g
#define int long long
using namespace std;
ifstream f ("test.in");
ofstream g ("test.out");
int n, m, a[500005], t[500005], len, dp[500005];
pair <int, int> ord[500005];
void add (int val)
{
if (val>dp[len] || len==0)
{
dp[++len]=val;
}
int st=1, dr=len, poz=0;
while (st<=dr)
{
int mij = (st+dr) >> 1;
if (dp[mij]<val)
{
poz=mij;
st=mij+1;
}
else dr=mij-1;
}
dp[poz+1]=val;
}
int32_t main ()
{
ios :: sync_with_stdio (0);
cin.tie (nullptr);
cin >> n >> m;
for (int i=1;i<=m;i++)
{
cin >> t[i];
}
for (int i=1;i<=m;i++)
{
cin >> a[i];
}
for (int i=1;i<=m;i++)
{
ord[i]=make_pair (a[i]+t[i], (a[i]-t[i]+m));
}
sort (ord+1, ord+m+1);
for (int i=1;i<=m;i++)
{
add (ord[i].second);
}
cout << len;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |