您的位置:首页 > 编程语言 > C语言/C++

447B. DZY Loves Strings

2017-08-18 19:26 190 查看
B. DZY Loves Strings

time limit per test
1 second

memory limit per test
256 megabytes

input
standard input

output
standard output
DZY loves collecting special strings which only contain lowercase letters. For each lowercase letter
c DZY knows its value
wc. For each special string
s = s1s2...
s|s| (|s| is the length of the string) he represents its value with a function
f(s), where



Now DZY has a string s. He wants to insert
k lowercase letters into this string in order to get the largest possible value of the resulting string. Can you help him calculate the largest possible value he could get?

Input
The first line contains a single string s (1 ≤ |s| ≤ 103).

The second line contains a single integer k (0 ≤ k ≤ 103).

The third line contains twenty-six integers from wa to
wz. Each such number is non-negative and doesn't exceed
1000.

Output
Print a single integer — the largest possible value of the resulting string DZY could get.

Examples

Input
abc
3
1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1


Output
41


Note
In the test sample DZY can obtain "abcbbc",
value = 1·1 + 2·2 + 3·2 + 4·2 + 5·2 + 6·2 = 41.

题意分析:插入字符,要求Fn最大,只需要插入k个权值最大的字符即可。

#include <stdio.h>
#include <bits/stdc++.h>
using namespace std;
#define ll long long

int main()  
{  
       string s;
       int k;
       cin >> s >> k;
       int w[26],res=0,max=0;
        for(int i=0;i<26;i++){
                cin >> w[i];
                if(max<w[i])
                     max = w[i];
        }
       for(int i=0;i<s.length();i++){
              res += w[(s[i]-97)]*(i+1);
       }
       for(int i=s.length()+1;i<=s.length()+k;i++){
              res += max*i;
       }
       cout << res << endl;
       
       return 0;  
} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ACM C C++ CodeForces c语言