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.

Sample test(s)
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.


贪心,不难想到取最大的w扔在末尾

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=pre[x];p;p=next[p])
#define Lson (x<<1)
#define Rson ((x<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (100000007)
#define MAXN (1000+10)
long long mul(long long a,long long b){return (a*b)%F;}
long long add(long long a,long long b){return (a+b)%F;}
long long sub(long long a,long long b){return (a-b+(a-b)/F*F+F)%F;}
typedef long long ll;
char s[MAXN];
int k,w[MAXN];
int main()
{
// freopen("Strings.in","r",stdin);
// freopen(".out","w",stdout); scanf("%s\n%d",s+1,&k); int len=strlen(s+1); int p=0;
Fork(i,'a','z') cin>>w[i],p=max(p,w[i]); ll ans=0;
For(i,len) ans+=w[s[i]]*i; if (k) ans+=(len+1+len+k)*k/2*p; cout<<ans<<endl; return 0;
}

最新文章

  1. Windows Server 2008 小操作汇总
  2. sql server 游标 写给自己
  3. ViewPager中使用PhotoView时出现pointerIndex out of range异常
  4. NOLOCK、HOLDLOCK、UPDLOCK、TABLOCK、TABLOCKX
  5. Qt浅谈之四十五QSplitter实现自由伸缩滑动窗口
  6. NOI2013 Day1
  7. linux学习:wget与lynx用法整理
  8. gcc8.2安装
  9. .NET开发微信公众号之创建自定义菜单
  10. 第 5 章 网络 - 032 - 学容器必须懂 bridge 网络
  11. SpringMVC学习八 @ResponseBody注解
  12. jQuery中click(),bind(),live()的区别(转)
  13. 【转】关于 SELECT /*!40001 SQL_NO_CACHE */ * FROM 的解惑
  14. redis.windows.conf 参数说明
  15. pandas数据结构:Series/DataFrame;python函数:range/arange
  16. Extjs学习笔记--(四,基本函数介绍)
  17. Django学习笔记之Queryset的高效使用
  18. YBT 5.4 状态压缩动态规划
  19. (译)Getting Started——1.2.3 Defining the Interaction(定义交互)
  20. presentModalViewController方法,present一个透明的viewController,带动画效果

热门文章

  1. __FUNCTION__, __LINE__ 有助于debug的宏定义
  2. USACO holstein 超时代码
  3. Codeforces Round #338 (Div. 2) B. Longtail Hedgehog 记忆化搜索/树DP
  4. 0x36 组合计数
  5. mysql学习 2
  6. C++逐行读取文本文件的正确做法
  7. 转:Hibernate中Criteria和DetachedCriteria的完整用法
  8. WebApp开发技巧大全
  9. 用一个小的例子来说明为什么TCP采用三次握手才能保证连接成功
  10. ZBrush中Local模式的旋转