插入最大权值放最后自然是最好的。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define MAX 100005
#define mod 998244353ll
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int a[26];
int main() {
freopen("a.txt", "r", stdin);
freopen("b.txt", "w", stdout);
string s;
int k;
cin >> s >> k;
int t = -INF;
for (int i = 0; i < 26; ++i) {
cin >> a[i];
if (t < a[i]) {
t = a[i];
}
}
int len = s.length(), ans = 0;
for (int i = 0; s[i]; ++i) {
int t = s[i] - 'a';
ans = ans + (i + 1) * a[t];
}
while (k--) {
len++;
ans = ans + len * t;
}
cout << ans << endl;
return 0;
}