| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 939625 | LucaIlie | The short shank; Redemption (BOI21_prison) | C++17 | 2019 ms | 118480 KiB |
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... | ||||
