Source code
#include <iostream>
#include<vector>
#include<string>
#include<string.h>
#include<math.h>
#include<set>
#include<map>
#include<list>
#include<stack>
#include<queue>
#include <fstream>
#include<iterator>
#include<algorithm>
#include <iomanip> // std::setprecision
#include<unordered_set>
#include<sstream>
/* ==================================================
| |
| Author: *** S. M. Sabiul Hajjaj Sabit *** |
| Last Edit: July,25,2019 |
================================================== */
///***global declaration***///
#define all(arr) arr.begin(),arr.end()
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define up upper_bound
#define sz(x) x.size()
#define min3(a,b,c) min(min(a,b),c)
#define max3(a,b,c) max(max(a,b),c)
#define lli long long int
#define prnt(x) cout<<x<<endl
#define in1(x) cin>>x
#define in12(x,y) cin>>x>>y
using namespace std;
template <typename T>long long int power(T a, T b)
{
long long int pow=1;
for(int i=0; i<b; i++)
pow *= a;
return pow;
}
bool isPrime(int n)
{
int ans=true;
for(int i=2; i<=n/2; i++)
{
if(n%i == 0)
{
ans = false;
break;
}
}
if (ans) return true;
else return false;
}
/**** ascending sort vector of pair basis fd 2nd element******/
//sort(arr.begin(), arr.end(),sortbysec);
bool sortbysec(const pair<int,int> &a,const pair<int,int> &b)
{
//return (a.second < b.second); //ascending
return (a.second > b.second); //descending
}
/////*********Write Code From Here*********///
int main()
{
int n,m;
cin>>n>>m;
vector<string>arr;
int ans[1200]= {0,0,0,0,0};
for(int i=0; i<n; i++)
{
string s;
cin>>s;
arr.pb(s);
}
for(int i=0; i<m; i++)
{
cin>>ans[i];
}
int mx=0,index;
int count=0;
int a,b,c,d,e;
for(int i=0; i<m; i++)
{
mx=0;
a=0,b=0,c=0,d=0,e=0;
for(int j=0; j<arr.size(); j++)
{
string s=arr[j];
if(s[i]=='A')a++;
else if(s[i]=='B')b++;
else if(s[i]=='C')c++;
else if(s[i]=='D' )d++;
else if(s[i]=='E' )e++;
}
mx+= max(a,max(b,max(c,max(d,e))));
count+= mx*ans[i];
}
cout<<count<<endl;
}
Add your comment