codeforces #577(Div.2)

A  Important Exam

A class of students wrote a multiple-choice test.

There are nn students in the class. The test had mm questions, each of them had 55 possible answers (A, B, C, D or E). There is exactly one correct answer for each question. The correct answer for question ii worth aiai points. Incorrect answers are graded with zero points.

The students remember what answers they gave on the exam, but they don't know what are the correct answers. They are very optimistic, so they want to know what is the maximum possible total score of all students in the class.

Input

The first line contains integers nn and mm (1≤n,m≤10001≤n,m≤1000) — the number of students in the class and the number of questions in the test.

Each of the next nn lines contains string sisi (|si|=m|si|=m), describing an answer of the ii-th student. The jj-th character represents the student answer (A, B, C, D or E) on the jj-th question.

The last line contains mm integers a1,a2,…,ama1,a2,…,am (1≤ai≤10001≤ai≤1000) — the number of points for the correct answer for every question.

Output

Print a single integer — the maximum possible total score of the class.

Examples

input

2 4
ABCD
ABCE
1 2 3 4

output

16

input

3 3
ABC
BCD
CDE
5 4 12

output

21

Note

In the first example, one of the most optimal test answers is "ABCD", this way the total number of points will be 1616.

In the second example, one of the most optimal test answers is "CCC", this way each question will be answered by exactly one student and the total number of points is 5+4+12=215+4+12=21.

题意:学生考完试后想算成绩,但他们不知道正确答案,只是每个人都记住了自己填写的答案,最后一行输入每个题目如果正确的话其得分为多少。让你算一下答案由你来决定的话,它们总分最多是多少,输出这个总分即可。每道题目最多有五个选项。

思路:算出每个题中选项最多的答案数量,再乘以改题正确的分数。代码如下:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
int const maxn=1001;
struct node{
string a;
}q[maxn];
int main()
{
int n,k,x;
LL sum=0;
int s[5];
scanf("%d %d",&n,&k);
for(int i=0;i<n;i++){
cin>>q[i].a;
}
for(int i=0;i<k;i++){
scanf("%d",&x);
memset(s,0,sizeof(s));
for(int j=0;j<n;j++){
if(q[j].a[i]=='A')s[0]++;
if(q[j].a[i]=='B')s[1]++;
if(q[j].a[i]=='C')s[2]++;
if(q[j].a[i]=='D')s[3]++;
if(q[j].a[i]=='E')s[4]++;
}
sum+=x*max(s[0],max(s[1],max(s[2],max(s[3],s[4]))));
}
cout<<sum<<endl;
return 0;
}

B.Zero Array

You are given an array a1,a2,…,ana1,a2,…,an.

In one operation you can choose two elements aiai and ajaj (i≠ji≠j) and decrease each of them by one.

You need to check whether it is possible to make all the elements equal to zero or not.

Input

The first line contains a single integer nn (2≤n≤1052≤n≤105) — the size of the array.

The second line contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1091≤ai≤109) — the elements of the array.

Output

Print "YES" if it is possible to make all elements zero, otherwise print "NO".

Examples

input

4
1 1 2 2

output

YES

input

6
1 2 3 4 5 6

output

NO

Note

In the first example, you can make all elements equal to zero in 33 operations:

  • Decrease a1a1 and a2a2,
  • Decrease a3a3 and a4a4,
  • Decrease a3a3 and a4a4

In the second example, one can show that it is impossible to make all elements equal to zero.

题意: 输入一组数,每次选其中两个数,使这两个数都减一。输入的数能否全都减为0。能的话输出“YES”,不能的话输出“NO”。

思路:计算所有数的和,和为奇数肯定不行,和为偶数有可能。但当某个数比其他所有数的和都大时也不行。代码如下:

#include <bits/stdc++.h>
#define LL long long
using namespace std;
int const maxn=100001;
bool cmp(int a,int b){return a>b;}
int main(){
int n;
int a[maxn];
LL sum=0;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
sum+=a[i];
}
sort(a,a+n,cmp);
if(sum%2==0&&sum-a[0]>=a[0])printf("YES\n");
else printf("NO\n");
return 0;
}

codeforces #577(Div.2)的更多相关文章

  1. Codeforces Round #577 (Div. 2) D. Treasure Hunting

    Codeforces Round #577 (Div. 2)  D. Treasure Hunting 这个一场div2 前面三题特别简单,这个D题的dp还是比较难的,不过题目告诉你了只能往上走,所以 ...

  2. Codeforces #344 Div.2

    Codeforces #344 Div.2 Interview 题目描述:求两个序列的子序列或操作的和的最大值 solution 签到题 时间复杂度:\(O(n^2)\) Print Check 题目 ...

  3. Codeforces #345 Div.1

    Codeforces #345 Div.1 打CF有助于提高做题的正确率. Watchmen 题目描述:求欧拉距离等于曼哈顿距离的点对个数. solution 签到题,其实就是求有多少对点在同一行或同 ...

  4. Codeforces Beta Round #27 (Codeforces format, Div. 2)

    Codeforces Beta Round #27 (Codeforces format, Div. 2) http://codeforces.com/contest/27 A #include< ...

  5. Codeforces#441 Div.2 四小题

    Codeforces#441 Div.2 四小题 链接 A. Trip For Meal 小熊维尼喜欢吃蜂蜜.他每天要在朋友家享用N次蜂蜜 , 朋友A到B家的距离是 a ,A到C家的距离是b ,B到C ...

  6. codeforces #592(Div.2)

    codeforces #592(Div.2) A Pens and Pencils Tomorrow is a difficult day for Polycarp: he has to attend ...

  7. codeforces #578(Div.2)

    codeforces #578(Div.2) A. Hotelier Amugae has a hotel consisting of 1010 rooms. The rooms are number ...

  8. codeforces #332 div 2 D. Spongebob and Squares

    http://codeforces.com/contest/599/problem/D 题意:给出总的方格数x,问有多少种不同尺寸的矩形满足题意,输出方案数和长宽(3,5和5,3算两种) 思路:比赛的 ...

  9. 矩阵拿宝物--Codeforces 1201D - Treasure Hunting Codeforces Round #577 (Div. 2)

    网上题解比较少,自己比较弱研究了半天(已经过了),希望对找题解的人有帮助 题目链接:https://codeforc.es/contest/1201/problem/D 题意: 给你一个矩形,起始点在 ...

随机推荐

  1. 分母为0的坑(float)

    分母不能为0 对于int 类型,如果分母为0,在程序运行时,会报错. 而对于float 类型,如果分母为0,则不会报错,而是会返回一个infinity(无穷大),也就是NAN. 因为除一个无穷小的数, ...

  2. Deep Q Network(DQN)原理解析

    1. 前言 在前面的章节中我们介绍了时序差分算法(TD)和Q-Learning,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,而当状态和动作空间是高维连续时,使用Q- ...

  3. Android TextField : set focus + soft input programmatically

    Good sir, try this: edittext.setFocusableInTouchMode(true); edittext.requestFocus(); Im not sure, bu ...

  4. 搭建Dubbo Admin(五)

    Dubbo Admin下载地址(2019年9月8日):https://github.com/apache/dubbo-admin 注意:JDK要求1.8以上 1. 进入到模块 dubbo-admin- ...

  5. 7.Vue的计算属性

    1.什么是计算属性 computed:计算属性的重点突出在 属性 两个字上(属性是名词),首先它是个 属性 其次这个属性有 计算的能力(计算是动词),这里的 计算 就是个函数:简单点说,它就是一个能够 ...

  6. Linux学习笔记-第8天 - 看似很简单

    这些东西已经看了三遍,已经能够理解了.看似很简单,希望真正在用的时候不会出差子.

  7. 生成指定python项目中所有的依赖文件

    一. pipreqs工具 这个工具的好处是可以通过对项目目录的扫描,自动发现使用了那些类库,自动生成依赖清单. 缺点是可能会有些偏差,需要检查并自己调整下. 安装: pip install pipre ...

  8. 简析平衡树(四)——FHQ Treap

    前言 好久没码过平衡树了! 这次在闪指导的指导下学会了\(FHQ\ Treap\),一方面是因为听说它可以可持久化,另一方面则是因为听说它是真的好写. 简介 \(FHQ\ Treap\),又称作非旋\ ...

  9. 【2019.7.15 NOIP模拟赛 T2】与非树(nand)(树形DP)

    树形\(DP\) 实际上,这道题应该不是很难. 我们设\(f_{x,i,j}\)表示在以\(x\)为根的子树内,原本应输出\(i\),结果输出了\(j\)的情况数. 转移时,为了方便,我们先考虑与,再 ...

  10. 【转】web.xml详解

    转载:https://www.cnblogs.com/vanl/p/5737656.html. 一:web.xml加载过程 简单说一下,web.xml的加载过程.当我们启动一个WEB项目容器时,容器包 ...