Uva 11340 - Newspaper
*** Solution with Brute Force *******
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
#define sf scanf
#define pf printf
#define mx 1000100
typedef long long LL;
struct my
{
char c;
LL v;
};
my ch[mx+9];
char mch[mx+9];
int main()
{
int t;
sf("%d\n",&t);
while(t--)
{
//memset(ch,0,sizeof(ch));
//memset(mch,0,sizeof(mch));
int k;
LL i;
sf("%d\n",&k);
for(i=0;i<k;i++)
{
sf("%c%lld\n",&ch[i].c,&ch[i].v);
}
LL m,s=0;
sf("%lld\n",&m);
for(i=0;i<m;i++)
{
gets(mch);
LL len=strlen(mch);
for(LL r=0;r<k;r++)
{
for(LL j=0;j<len;j++)
{
if(ch[r].c == mch[j])
{
s+=ch[r].v;
}
}
}
}
pf("%0.2lf$\n", double(s / 100.0));
}
return 0;
}
**** Solution With Map ****
#include<cstdio>
#include<cstring>
#include<cmath>
#include<map>
#include<iostream>
using namespace std;
#define sf scanf
#define pf printf
#define mx 1000100
typedef long long LL;
char ch[mx+9];
int main()
{
int t;
map<char,int>mp;
sf("%d\n",&t);
while(t--)
{
mp.clear();
int k;
sf("%d\n",&k);
char c;
LL v,i;
for(i=0;i<k;i++)
{
sf("%c%lld\n",&c,&v);
mp[c]=v;
}
//for(i=0;i<k;i++)cout<<mp[i]<<" ";
LL m,s=0;
sf("%lld\n",&m);
for(i=0;i<m;i++)
{
gets(ch);
LL len = strlen(ch);
for(LL j=0;j<len;j++)
{
s+=mp[ch[j]];
}
}
//cout << s << endl;
pf("%.2lf$\n",double(s/100.0));
}
return 0;
}
Comments
Post a Comment