PKU 1805 Friends

http://poj.org/problem?id=1805
レストランにいる人達で、次にどこにいくかを投票して決める。
投票はあるルールに従って、行われる。
これをシミュレートして最終的な行き先を決定しろというような問題。

場合分けゲー。
多少の面倒くささを我慢して頑張る。

main(){
  int n;
  cin>>n;
  cin.get();
  rep(sc,n){
    string in;
    getline(cin,in);
    stringstream ss(in);
    set<string> app;
    int vo[3]={0};
    while(ss>>in)app.insert(in);

    if(app.count("Anne"))vo[0]++;
    if(app.count("Bob")){
      if(app.count("Karin")+(app.count("Dave")|!app.count("Anne")|app.count("Edward"))>1);
      else if(app.count("Karin"))vo[2]++;
      else if(app.count("Dave") || app.count("Edward"))vo[1]++;
      else if(!app.count("Anne"))vo[1]++;
    }
    
    if(app.count("Karin")){
      if(app.count("Charly"))vo[2]++;
      else if(app.count("Anne"))vo[0]++;
      else vo[1]++;
    }
    if(app.count("Charly") && app.count("Anne"))vo[0]++;

    if(app.count("Edward")){
      if(app.count("Anne") && !app.count("Charly"))vo[1]++;
      else vo[0]++;
    }

    if(app.count("Frank")){
      if(!app.count("Bob") && !app.count("Anne"))vo[0]++;
      else if(app.count("Anne"))vo[2]++;
    }

    cout<<"Scenario #"<<sc+1<<':'<<endl;
    if(vo[0]>vo[1] && vo[0]>vo[2])cout<<"cinema";
    else if(vo[1]>vo[0] && vo[1]>vo[2])cout<<"cocktail bar";
    else if(vo[2]>vo[0] && vo[2]>vo[1])cout<<"disco";
    else cout<<"stay at the Hacienda";
    cout<<endl<<endl;
  }
}