Submission #1150769

#TimeUsernameProblemLanguageResultExecution timeMemory
1150769vicvicArcade (NOI20_arcade)C++20
51 / 100
3 ms836 KiB
#include <iostream>
#include <algorithm>
#include <cstdint>
#define int long long
using namespace std;
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 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...