Submission #349212

#TimeUsernameProblemLanguageResultExecution timeMemory
349212gozoniteRabbit Carrot (LMIO19_triusis)C++14
0 / 100
4 ms492 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<pair<int, int>> vii; typedef pair<int, int> pi; #define MOD 1000000007LL ll N, M; vector<ll> a; int main() { //freopen("feast.in", "r", stdin); //freopen("feast.out", "w", stdout); //ios_base::sync_with_stdio(false); //cin.tie(0); cin >> N >> M; a.resize(N+1); a[0] = 0; for (int i = 1; i <= N; i++) cin >> a[i]; vector<ll> lis{ 0 }; vector<ll> slis{ 0 }; for (ll i = 1; i <= N; i++) { if (a[i] <= (lis.back() + M*(i-slis.back())) + M) { lis.push_back(a[i]); slis.push_back(i+1); } else if (a[i] > i*M) { a[i] = a[i]; } else { int lo = -1, hi = lis.size()-1; while (lo < hi) { int mid = (lo+hi+1)/2; ll val = (lis[mid] + M*(i-slis[mid])) + M; if (a[i] <= val) lo = mid; else hi = mid-1; } lis[lo+1] = a[i]; slis[lo+1] = i+1; } //cout << "After round " << i << endl; //for (auto x : lis) cout << x << " "; cout << endl; //for (auto x : slis) cout << x << " "; cout << endl; } cout << N+1-lis.size() << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...