Submission #125854

#TimeUsernameProblemLanguageResultExecution timeMemory
125854tutisPopeala (CEOI16_popeala)C++17
26 / 100
2047 ms3704 KiB
/*input 2 3 3 4 3 5 101 110 */ #pragma GCC optimize ("O3") #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const ll modulo = 1000000007; int main() { ll N, T, S; cin >> N >> T >> S; ll p[T + 1]; for (ll i = 1; i <= T; i++) cin >> p[i]; string res[N]; for (ll i = 0; i < N; i++) cin >> res[i]; ll dp[S + 1][T + 1]; for (ll a = 0; a <= S; a++) { for (ll b = 0; b <= T; b++) { dp[a][b] = 1e15; } } dp[0][0] = 0; { int kada[N]; for (int i = 0; i < N; i++) kada[i] = 0; for (ll b = 1; b <= T; b++) { for (ll i = 0; i < N; i++) { if (res[i][b - 1] == '0') { kada[i] = b; } } int x[N]; for (int i = 0; i < N; i++) x[i] = kada[i]; sort(x, x + N, greater<int>()); int i = 0; ll suma = 0; ll kiek = N; for (int a = b; a > 0; a--) { suma += p[a]; while (i < N && x[i] >= a) { i++; kiek--; } for (ll c = 1; c <= S; c++) dp[c][b] = min(dp[c][b], dp[c - 1][a - 1] + kiek * suma); } } } for (ll c = 1; c <= S; c++) { cout << dp[c][T] << "\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...