알고리즘

[알고리즘] 백준 9017 - 크로스 컨트리 (C++)

blueberrysoda 2025. 5. 10. 23:06

[문제 링크] : https://www.acmicpc.net/problem/9017

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;

int T, N;
int Arr[201];
int Cnt[201];
int sum[201][2];
vector<int> V;

int main(){
    int inp;
    cin >> T;
    while(T--){
        cin >> N;
        memset(Arr, 0, sizeof(Arr));
        memset(sum, 0, sizeof(sum));
        memset(Cnt, 0, sizeof(Cnt));
        V.clear();

        for(int i=1; i<=N; i++){
            cin >> inp;
            V.push_back(inp);
            Arr[inp]++;
        }

        int tmp = 1;
        for(auto at : V){
            if(Arr[at] == 6){
                Cnt[at]++;
                if(Cnt[at] == 5){
                    sum[at][1] = tmp;
                }
                else if(Cnt[at] < 5){
                    sum[at][0] += tmp;
                }
                tmp++;
            }
        }

        int t = 1, s = 99999999;

        for(int i=1; i<=200; i++){
            if(Arr[i] != 6){
                continue;
            }
            
            if(sum[i][0] < s){
                s = sum[i][0];
                t = i;
            }
            else if(sum[i][0] == s){
                if(sum[i][1] < sum[t][1]){
                    t = i;
                }
            }
        }
        cout << t << "\n";
    }
    return 0;
}