# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
52955 | 2018-06-27T08:51:27 Z | 0^0(#1376) | Popeala (CEOI16_popeala) | C++11 | 54 ms | 37408 KB |
#include <bits/stdc++.h> using namespace std; typedef long long ll; int n, t, s; const ll inf = 0x3f3f3f3f3f3f3f3f; int p[20005]; int r[55][20005]; int sum[20005]; int q[20005][55]; ll dp[2][55][20005]; int rr[55]; deque<int> dq[55]; long long query(int bit, int idx, int l, int r) { assert(idx >= 0 && idx <= n); for (int i = rr[idx] + 1; i <= r; i++) { while (!dq[idx].empty() && dp[bit][idx][dq[idx].back()] >= dp[bit][idx][i])dq[idx].pop_back(); dq[idx].push_back(i); } rr[idx] = r; while (!dq[idx].empty() && dq[idx].front() < l)dq[idx].pop_front(); if (l > r)return inf; return dp[bit][idx][dq[idx].front()]; } void solve(int k) { int now = k & 1; int pre = 1 - now; for (int i = 0; i <= n; i++) { dp[now][i][0] = inf; dq[i].clear(); rr[i] = -1; } for (int i = 1; i <= t; i++) { int c = n; long long val = inf; int ri = i; for (int j = 0; j<n; j++) { int le = ri - q[i][j] + 1; val = min(val, query(pre, c, le - 1, ri - 1) + c * sum[i]); c--; ri = le - 1; } val = min(val, query(pre, c, 0, ri - 1)); for (int j = 0; j <= n; j++) dp[now][j][i] = val - j * sum[i]; if (i == t) printf("%lld\n", val); } } int main() { scanf("%d%d%d", &n, &t, &s); for (int i = 1; i <= t; i++) { scanf("%d", &p[i]); sum[i] = sum[i - 1] + p[i]; } for (int i = 0; i < n; i++) { int cnt = 0; for (int j = 1; j <= t; j++) { scanf("%1d", &r[i][j]); if (r[i][j])cnt++; else cnt = 0; q[j][i] = cnt; } } for (int i = 1; i <= t; i++) { sort(q[i], q[i] + n); for (int j = 1; j < n; j++) q[i][j] -= q[i][j - 1]; } memset(dp, 0x3f, sizeof(dp)); for (int i = 0; i <= n; i++) dp[0][i][0] = 0; for (int i = 1; i <= s; i++) solve(i); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 17656 KB | Output is correct |
2 | Incorrect | 19 ms | 17864 KB | Output isn't correct |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 39 ms | 35984 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Runtime error | 54 ms | 37408 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 16 ms | 17656 KB | Output is correct |
2 | Incorrect | 19 ms | 17864 KB | Output isn't correct |