This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 4000;
const int MAX_D = MAX_N;
const int INF = MAX_N + 1;
int minPrisoners[MAX_N + 1][MAX_D + 1], t[MAX_N + 1], prisoners[MAX_N + 1];
int main() {
int n, d, s;
cin >> n >> d >> s;
d++;
for ( int i = 1; i <= n; i++ ) {
cin >> t[i];
t[i] -= i;
}
minPrisoners[0][0] = 0;
for ( int i = 1; i <= n; i++ )
minPrisoners[i][0] = INF;
for ( int k = 1; k <= d; k++ ) {
minPrisoners[0][k] = INF;
for ( int i = 1; i <= n; i++ ) {
prisoners[i] = minPrisoners[i - 1][k - 1];
int minT = s;
for ( int j = i; j >= 1; j-- ) {
minT = min( minT, t[j] );
if ( minT + i <= s )
prisoners[j]++;
}
minPrisoners[i][k] = INF;
for ( int j = i; j >= 1; j-- )
minPrisoners[i][k] = min( minPrisoners[i][k], prisoners[j] );
}
}
cout << minPrisoners[n][d] << "\n";
return 0;
}
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |