Submission #396970

#TimeUsernameProblemLanguageResultExecution timeMemory
396970huukhangRabbit Carrot (LMIO19_triusis)C++11
100 / 100
36 ms4672 KiB
// - Only when necessary :d // #pragma GCC optimize("Ofast") // #pragma GCC optimize("unroll-loops") // #pragma GCC target("avx,avx2,fma") #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace std; using namespace __gnu_pbds; #define fileopen(a, b) freopen(((string)a + ".inp").c_str(), "r", stdin); freopen(((string)b + ".out").c_str(), "w", stdout); #define ll long long // #define int long long #define fi first #define se second #define pb push_back #define pob pop_back typedef pair<int, int> pii; typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set; const ll mod = 1e9 + 7; const ll inf = 1e9 + 7; const double eps = 1e-9; int n, k; int a[200005]; vector<int> lis; int dp[200005]; void solve() { cin >> n >> k; for (int i = 1; i <= n; ++i) { cin >> a[i]; if (k*i - a[i] >= 0) lis.pb(k*i - a[i]); } int n2 = lis.size(); dp[0] = -inf; for (int i = 1; i <= n2; ++i) dp[i] = inf; for (int i = 0; i < n2; ++i) { int idx = upper_bound(dp + 1, dp + n2 + 1, lis[i]) - dp; if (dp[idx - 1] <= lis[i]) dp[idx] = lis[i]; } for (int i = n2; i >= 0; --i) { if (dp[i] != inf) { cout << n - i; return; } } } signed main() { #ifdef khangorz fileopen("input", "output"); #endif #ifndef khangorz // fileopen("LAH", "LAH"); #endif ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); solve(); 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...