Submission #570352

#TimeUsernameProblemLanguageResultExecution timeMemory
570352600MihneaPopeala (CEOI16_popeala)C++17
17 / 100
2076 ms1620 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; signed main() { ios::sync_with_stdio(0); cin.tie(0); /// freopen ("input.txt", "r", stdin); const int INF_INT = (int) 2e9 + 7; int n, t, s; cin >> n >> t >> s; vector<int> points(t), sum(t + 1, 0); vector<vector<int>> v(n, vector<int> (t, 0)), pref(n, vector<int> (t + 1, 0)); vector<pair<int, int>> last0(n); for (int i = 0; i < n; i++) { last0[i] = {1, i}; } for (int i = 0; i < t; i++) { cin >> points[i]; sum[i + 1] = sum[i] + points[i]; } for (int i = 0; i < n; i++) { string str; cin >> str; assert((int) str.size() == t); for (int j = 0; j < t; j++) { v[i][j] = str[j] - '0'; assert(v[i][j] == 0 || v[i][j] == 1); pref[i][j + 1] = pref[i][j] + v[i][j]; } } vector<vector<int>> dp(t + 1, vector<int> (s + 1, INF_INT)); dp[0][0] = 0; for (int r = 1; r <= t; r++) { vector<int> where(n); for (int i = 0; i < n; i++) { where[last0[i].second] = i; } for (int i = 0; i < n; i++) { if (v[i][r - 1] == 0) { last0[where[i]].first = r + 1; assert(last0[where[i]].second == i); } } sort(last0.begin(), last0.end()); for (int here = 1; here <= s; here++) { /// compute dp[r][t] int best = INF_INT; for (int coef = 0; coef <= n; coef++) { int cnt = 0, L, R; if (coef == 0) { L = 0; } else { L = last0[coef - 1].first; } if (coef == n) { R = r; } else { R = last0[coef].first; } for (int l = 1; l <= r; l++) { while (cnt < n && last0[cnt].first <= l) { cnt++; } if (cnt == coef) { assert(l >= L); ///assert(r <= R); best = min((ll) best, (ll) dp[l - 1][here - 1] + coef * (sum[r] - sum[l - 1])); } } } dp[r][here] = best; } } for (int i = 1; i <= s; i++) { cout << dp[t][i] << "\n"; } }

Compilation message (stderr)

popeala.cpp: In function 'int main()':
popeala.cpp:60:25: warning: variable 'R' set but not used [-Wunused-but-set-variable]
   60 |         int cnt = 0, L, R;
      |                         ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...