Submission #1162082

#TimeUsernameProblemLanguageResultExecution timeMemory
1162082AndrijaMArcade (NOI20_arcade)C++20
51 / 100
3 ms836 KiB
#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 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...