Submission #619178

#TimeUsernameProblemLanguageResultExecution timeMemory
619178HanksburgerRabbit Carrot (LMIO19_triusis)C++17
100 / 100
157 ms13864 KiB
#include <bits/stdc++.h>
using namespace std;
set<pair<long long, long long> > s;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    long long n, m, ans=1e18;
    cin >> n >> m;
    s.insert({0, 0});
    s.insert({1e18, 1e18});
    for (long long i=1; i<=n; i++)
    {
        long long x, y;
        cin >> x;
        y=(*s.lower_bound({x-m*i, -1e18})).second;
        auto itr=s.lower_bound({x-m*i, -1e18});
        if (y-1<(*itr).second)
        {
            long long fi=(*itr).first, se=(*itr).second;
            auto itr2=itr;
            while (y-1<(*itr2).second)
            {
                itr2=s.erase(itr2);
                if (itr2==s.begin())
                    break;
                itr2--;
            }
            if (x-m*i==fi)
                s.insert({fi, y-1});
            else
            {
                s.insert({fi, se});
                s.insert({x-m*i, y-1});
            }
        }

    }
    for (auto itr=s.begin(); itr!=s.end(); itr++)
        ans=min(ans, itr->second+n);
    cout << ans;
    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...