fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define SZ(x) ((int)(x).size())
  5.  
  6. int main() {
  7. int n; cin >> n;
  8. string s; cin >> s;
  9. long long a[n];
  10. for(int i = 0; i < n; i++) {
  11. cin >> a[i];
  12. }
  13. vector<vector<int> > pos(4);
  14. string t = "hard";
  15. long long amb[4]; memset(amb, 0, sizeof amb);
  16. for(int j = 0; j < 4; j++) {
  17. for(int i = 0; i < n; i++) {
  18. if(s[i] == t[j]) {
  19. pos[j].push_back(i);
  20. }
  21. }
  22. if(SZ(pos[j]) == 0) {
  23. cout << 0 << endl; return 0;
  24. }
  25. }
  26. for(int i = 0; i < SZ(pos[0]); i++) {
  27. if(pos[0][i] < pos[1][SZ(pos[1]) - 1]) {
  28. amb[0] += a[pos[0][i]];
  29. }
  30. }
  31. for(int i = 1; i < 3; i++) {
  32. for(int j = 0; j < pos[i].size(); j++) {
  33. if(pos[i][j] < pos[i + 1][SZ(pos[i + 1]) - 1] && pos[i][j] > pos[i - 1][pos[i - 1][0]]) {
  34. amb[i] += a[pos[i][j]];
  35. }
  36. }
  37. }
  38. for(int i = 0; i < SZ(pos[3]); i++) {
  39. if(pos[3][i] > pos[2][0]) {
  40. amb[3] += a[pos[3][i]];
  41. }
  42. }
  43. cout << min(amb[0], min(amb[1], min(amb[2], amb[3])));
  44. return 0;
  45. }
Success #stdin #stdout 0s 15240KB
stdin
6
hhardh
3 2 9 11 7 1
stdout
5