fork download
  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4.  
  5. using namespace std;
  6.  
  7. void solve() {
  8. int n; cin >> n;
  9. vector <vector<int>> a(n + 5, vector <int> (2));
  10. vector <vector<string>> s(n + 5, vector <string> (2));
  11. for (int i = 1; i <= n; ++i) cin >> a[i][1];
  12. for (int i = 1; i <= n; ++i) {
  13. cin >> s[i][0];
  14. s[i][1] = s[i][0];
  15. reverse(s[i][1].begin(), s[i][1].end());
  16. }
  17.  
  18. vector <vector<ll>> dp(n + 5, vector<ll> (2, 9e18));
  19.  
  20. dp[1][0] = 0;
  21. dp[1][1] = a[1][1];
  22. for (int i = 2; i <= n; ++i) {
  23. for (int j = 0; j <= 1; ++j) {
  24. for (int k = 0; k <= 1; ++k) {
  25. if (s[i - 1][j] <= s[i][k]) {
  26. dp[i][k] = min(dp[i][k], dp[i - 1][j] + a[i][k]);
  27. }
  28. }
  29. }
  30. }
  31.  
  32. ll ans = min(dp[n][0], dp[n][1]);
  33.  
  34. cout << (ans == 9e18 ? -1 : ans);
  35. }
  36.  
  37. int main() {
  38. ios_base::sync_with_stdio(0);
  39. cin.tie(0); cout.tie(0);
  40.  
  41. if (fopen("reverse.inp", "r")) {
  42. freopen("reverse.inp", "r", stdin);
  43. freopen("reverse.out", "w", stdout);
  44. }
  45.  
  46. solve();
  47.  
  48. return 0;
  49. }
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty