이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll mod = 1000000007;
int main() {
ll n, m;
cin >> n >> m;
vector<ll> vals(n);
for (ll i = 1; i <= n; i++) {
int d;
cin >> d;
vals[i - 1] = m * i - d;
}
vector<int> dp;
int lis = 0;
if (vals[0] >= 0) {
lis++;
dp.push_back(vals[0]);
}
for (ll i = 1; i < n; i++) {
if (vals[i] < 0) continue;
if (upper_bound(dp.begin(), dp.end(), vals[i]) == dp.end()) {
lis++;
dp.push_back(vals[i]);
} else {
dp[upper_bound(dp.begin(), dp.end(), vals[i]) - dp.begin()] = vals[i];
}
// if (m * (i + 1) < vals[i]) continue;
// ll best = -1;
// ll best_s = 0;
// for (ll j = 0; j < i; j++) {
// if (vals[i] > vals[j] + m * (i - j)) continue;
// if (dp[j + 1] >= best_s) {
// best_s = dp[j + 1];
// best = j;
// }
// }
// dp[i + 1] = 1 + dp[best + 1];
}
cout << n - lis << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |