ZOJ 1184 - Counterfeit Dollar

 1  /*  Accepted 1184 C++ 00:00.00 832K  */
 2  #include  < string >
 3  #include  < iostream >
 4 
 5  using   namespace  std;
 6 
 7  int  main()
 8  {
 9        int  n;
10       cin  >>  n;
11        while (n -- )
12       {
13             string  left, right, status;
14            
15             int  weight[ 12 =  { 0 };
16             bool  real[ 12 =  { false };
17            
18             for ( int  i  =   0 ; i  <   3 ; i ++ )
19            {
20                 cin  >>  left  >>  right  >>  status;
21                  if (status  ==   " even " )
22                 {
23                       for ( int  j  =   0 ; j  <  left.size(); j ++ )
24                           real[left[j]  -   ' A ' =   true , real[right[j]  -   ' A ' =   true ;
25                       continue ;
26                 }
27                  if (status  ==   " up " )
28                 {
29                       for ( int  j  =   0 ; j  <  left.size(); j ++ )
30                           weight[left[j]  -   ' A ' ] ++ , weight[right[j]  -   ' A ' ] -- ;
31                       continue ;
32                 }
33                  // status == "down"
34                  for ( int  j  =   0 ; j  <  left.size(); j ++ )
35                      weight[left[j]  -   ' A ' ] -- , weight[right[j]  -   ' A ' ] ++ ;
36            }
37            
38             int  max  =   0 , counterfeit;  bool  light;
39             for ( int  i  =   0 ; i  <   12 ; i ++ )
40                  if (real[i]  ==   false )
41                       if (max  <  abs(weight[i]))
42                      {
43                           max  =  abs(weight[i]);
44                           counterfeit  =  i;
45                            if (weight[i]  <   0 )
46                                light  =   true ;
47                            else
48                                light  =   false ;
49                      }
50            cout  <<   char (counterfeit  +   ' A ' <<   "  is the counterfeit coin and it is  "
51                  <<  (light  ?   " light. "  :  " heavy. " <<  endl;
52       }
53       
54        return   0 ;
55  }
56 

你可能感兴趣的:(ZOJ 1184 - Counterfeit Dollar)