Submission #473446

#TimeUsernameProblemLanguageResultExecution timeMemory
473446CrocoRabbit Carrot (LMIO19_triusis)C++17
100 / 100
42 ms9916 KiB
#include <bits/stdc++.h>
#define int long long int
#define ll long long

using namespace std;

const int N = 2e5 + 5;

int find_lis(vector<int> a)	//strictly increasing, for non-dec. change lower_bound to upper_bound
{
    vector<int> dp;
    for(auto x : a)
    {
        int pos = upper_bound(dp.begin(),dp.end(),x) - dp.begin();
        if(pos == dp.size())
            dp.push_back(x);
        else
            dp[pos] = x;
    }
    return dp.size();
}

signed main()
{
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    int n,m;
    cin>>n>>m;
    int a[n];
    for(int i=0;i<n;i++)
        cin>>a[i];
    vector<int> v;
    for(int i=1;i<=n;i++)
    {
        int val = m*i - a[i-1];
        if(val >= 0)
            v.push_back(val);
    }
    cout << n - find_lis(v) << '\n';
}

Compilation message (stderr)

triusis.cpp: In function 'long long int find_lis(std::vector<long long int>)':
triusis.cpp:15:16: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   15 |         if(pos == dp.size())
      |            ~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...