usaco 4.3 lgame

usaco 4.3 lgame

/**/ /*
ID:ccl03261
LANG:C++
TASK:lgame
*/


#include 
< iostream >
#include 
< string >
#include 
< fstream >
#include 
< vector >
#include 
< algorithm >
using   namespace  std;
ifstream fin(
" lgame.in " );
ifstream dfin(
" lgame.dict " );
ofstream fout(
" lgame.out " );
vector
< string >  v;
string  input_str;
string  str[ 40001 ];
int  n = 0 ;
int  hash[ 26 ],phash[ 26 ];
int  t[ 40001 ][ 26 ];
int  score[ 26 ] = {2,5,4,4,1,6,5,5,1,7,6,3,5,2,3,5,7,2,1,2,4,6,6,7,5,7} ;
int  main()
{
    
for (int i=0;i<26;i++)
     hash[i]
=0;
    fin
>>input_str;
    
for (int i=0;i<input_str.length();i++)
     hash[input_str[i]
-'a']++;
    
for (int i=0;i<40001;i++)
     
for (int j=0;j<26;j++)
      t[i][j]
=0;
    
while(1)
    
{
     
string s;
     dfin
>>s;
     
if (s=="."break;
     
for (int i=0;i<26;i++) phash[i]=0;
     
for (int i=0;i<s.length();i++)
      phash[s[i]
-'a']++;
     
bool ok=true;
     
for (int i=0;i<26;i++)
      
if (phash[i]>hash[i]) {ok=false;break;}
     
if (ok) {n++;str[n]=s;for (int i=0;i<26;i++){t[n][i]=phash[i];}}
    }

    
    
int max_=0;
    str[
0]="";
    
for (int i=0;i<=n;i++)
    
{
     
for (int j=i+1;j<=n;j++)
     
{
      
for (int l=0;l<26;l++) phash[l]=0;
      
for (int k=0;k<26;k++)
       phash[k]
=t[i][k]+t[j][k];
      
bool ok=true;
      
for (int k=0;k<26;k++)
      
{
       
if (phash[k]>hash[k]) {ok=false;break;}
      }

      
      
if (ok)
      
{
       
int sum=0;
       
for (int k=0;k<26;k++)
         sum
+=phash[k]*score[k];
       
if (max_<sum) 
       
{
        max_
=sum;
        v.clear();
        
if (i==0) v.push_back(str[j]);
        
else
            v.push_back(str[i]
+" "+str[j]);
       }

       
else if (max_==sum)
            

               
if (i==0) v.push_back(str[j]);
               
else
                   v.push_back(str[i]
+" "+str[j]);
            }

      }

     }

    }

    fout
<<max_<<endl;
    sort(v.begin(),v.end());
    
for (int i=0;i<v.size();i++)
     fout
<<v[i]<<endl;
   
// system("pause");
    return 0;
}

你可能感兴趣的:(usaco 4.3 lgame)