Uva 10393 The One-Handed Typist Solution


Problem Link
Uva 10393 The One-Handed Typist Solution
#include<bits/stdc++.h>
using namespace std;
int fn[128];
bool fc[11];
void setup()
{
    fn['q']=fn['a']=fn['z']=1;
    fn['w']=fn['s']=fn['x']=2;
    fn['e']=fn['d']=fn['c']=3;
    fn['r']=fn['f']=fn['v']=fn['t']=fn['g']=fn['b']=4;
    fn['y']=fn['h']=fn['n']=fn['u']=fn['j']=fn['m']=7;
    fn['i']=fn['k']=fn[',']=8;
    fn['o']=fn['l']=fn['.']=9;
    fn['p']=fn[';']=fn['/']=10;
}
bool possible(string s)
{
    for(string::iterator it=s.begin(); it!=s.end();it++)
    {
        if(!fc[fn[*it]])
            return false;
    }
    return true;
}
int main()
{
    int f,n;
    setup();
    while(cin>>f>>n)
    {
        int i,a;
        for( i=0;i<=10;i++)
            fc[i]=true;
        while(f--)
        {
            cin>>a;
            fc[a]=false;
        }
        int max=0;
        set<string>bs;
        string s;
        while(n--)
        {
            cin>>s;
            if(s.size()>max && possible(s))
            {
                max=s.size();
                bs.clear();
                bs.insert(s);
            }
            else if(s.size()==max && possible(s))
                bs.insert(s);
        }
        cout<<bs.size()<<endl;
        vector<string>v(bs.begin(),bs.end());
        vector<string> :: iterator it;
        for(it=v.begin();it!=v.end();it++)
        {
            cout<<*it<<endl;
        }

    }
    return 0;
}

No comments

Theme images by enjoynz. Powered by Blogger.