#include <bits/stdc++.h>
using namespace std;
#define int long long
const int maxn=5e5+10;
int n,m;
int ans=0;
int dp[maxn];
int a[maxn];
int t[maxn];
pair<int,int> s[maxn];
void f(int x)
{
if(x>dp[ans] || ans==0)
{
ans++;
dp[ans]=x;
}
int l=1;
int r=ans;
int pos=0;
while(l<=r)
{
int mid=(l+r)/2;
if(dp[mid]<x)
{
pos=mid;
l=mid+1;
}
else
{
r=mid-1;
}
}
dp[pos+1]=x;
}
signed main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
///freopen("sort.in","r",stdin);
///freopen("sort.out","w",stdout);
cin>>n>>m;
for(int i=0;i<m;i++)
{
cin>>t[i];
}
for(int i=0;i<m;i++)
{
cin>>a[i];
}
for(int i=0;i<m;i++)
{
s[i]={a[i]+t[i],(a[i]-t[i]+m)};
}
sort(s,s+m);
for(int i=0;i<m;i++)
{
f(s[i].second);
}
cout<<ans<<endl;
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... |