BASEBALL 문제 질문드려요

  • jeongsub3312
    jeongsub3312

    지금 STL::vector를 공부중인 학생입니다.
    BASEBALL 문제를 풀어봤는데요
    계속 살펴봐도 이상이 없다고 생각하는데... 오답이 뜹니다..ㅠ
    한번 봐주시면 감사하겠습니다
    그리고 공부때문에 배열은 안쓰고 vector로 한것이니...
    양해부탁드려요^^;;

    #include <iostream>
    #include <string>
    #include <vector>
    using namespace std;
    
    typedef struct TEAM_INFO {
        string name;
        int win, draw, loss;
        float win_rate;
    }TEAM;
    
    typedef struct REMAIN_GAME {
        string team_A, team_B;
    }R_GAME;
    
    int main()
    {
        int cases;
        cin >> cases;
        while(cases--) {
            string name;
            int win, draw, loss;
            vector < TEAM > team_stat;
            for( int i=0; i<8; i++ ) {
                cin >> name >> win >> draw >> loss;
                float win_rate = (float)win / (win+draw+loss);
                TEAM tmp = { name, win, draw, loss, win_rate };
                team_stat.push_back(tmp);
            }
    
            string f_team;
            cin >> f_team;
    
            int remain;
            cin >> remain;
            vector <R_GAME> r_game;
    
            for( int i=0; i<remain; i++ ) {
                string remain_A, remain_B;
                cin >> remain_A >> remain_B;
                R_GAME tmp = {remain_A, remain_B};
                r_game.push_back(tmp);
            }
    
            for( int i=0; i<remain; i++ ) {
                vector <TEAM>::iterator team_a, team_b;
                for( vector <TEAM>::iterator iter = team_stat.begin(); iter != team_stat.end(); iter++ ) {
                    if( iter->name.compare( r_game.at(i).team_A ) == 0 )
                        team_a = iter;
    
                    if( iter->name.compare( r_game.at(i).team_B ) == 0 )
                        team_b = iter;
                }
    
                vector <TEAM>::iterator tmp_team;
                if( team_b->name.compare(f_team) == 0 ) {
                    tmp_team = team_a;
                    team_a = team_b;
                    team_b = tmp_team;
                }
                else {
                    if( team_a->win_rate > team_b->win_rate ) {
                        tmp_team = team_a;
                        team_a = team_b;
                        team_b = tmp_team;
                    }
                }
    
                team_a->win++;
                team_a->win_rate = (float)team_a->win / (team_a->win+team_a->draw+team_a->loss);
    
                team_b->loss++;
                team_b->win_rate = (float)team_b->win / (team_b->win+team_b->draw+team_b->loss);
            }
    
            for( vector <TEAM>::iterator iter = team_stat.begin(); iter != team_stat.end(); iter++ ) {
                if( iter->name.compare(f_team) != 0 )
                    continue;
    
                int rank = 8;
                for( vector <TEAM>::iterator iter2 = team_stat.begin(); iter2 != team_stat.end(); iter2++ ) {
                    if( iter != iter2 ) {
                        rank -= iter->win_rate >= iter2->win_rate ? 1 : 0;
                    }
                }
                if( rank <= 4 )
                    cout << "YES" << endl;
                else
                    cout << "NO" << endl;
    
                break;
            }
        }
        return 0;
    }
    

    10년 전
2개의 댓글이 있습니다.
  • Being
    Being

    team_af_team과 같을 때 승률이 더 높다고 해서 패배시켜버리면 안 될 것 같네요.


    10년 전 link
  • jeongsub3312
    jeongsub3312

    아 답변쓰는걸 잊었네요
    답변 정말 감사합니다^^
    글 보고 수정해봤지만 패스가 안됐네요...ㅜ


    9년 전 link
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.