백준 8979 올림픽

치즈·2022년 11월 27일

BOJ

목록 보기
20/45
#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

int N, K;
struct medals {
  int num;
  int gold;
  int silver;
  int bronze;
  int rank;
};

vector<medals> countries;

bool compare(medals a, medals b){
  if(a.gold != b.gold) return a.gold > b.gold;
  else{
    if(a.silver != b.silver) return a.silver > b.silver;
    else{
      if(a.bronze != b.bronze) return a.bronze > b.bronze;
      else return false;
    }
  }
}
int cmp(medals a, medals b){
  if(a.gold > b.gold) return 1;
  else if(a.gold < b.gold) return -1;
  else{
    //a.gold == b.gold
    if(a.silver > b.silver) return 1;
    else if(a.silver < b.silver) return -1;
    else{
      // a.silver == b.silver
      if(a.bronze > b.bronze) return 1;
      else if(a.bronze < b.bronze) return -1;
      else{
        // a.bronze == b.bronze
        return 0;
      }
    }
  }
}

void input(){
  cin >> N >> K;  
  for(int i = 0; i < N; i++){
    int a, b, c, d;
    cin >> a >> b >> c >> d;
    countries.push_back({a, b, c, d , -1});
  }
}

void solve(){
  sort(countries.begin(), countries.end(), compare);
  
  int rank = 1;
  for(int i = 0; i < N; i++){
    if(i==0) countries[i].rank = rank;
    else{
      countries[i].rank = i+1;
      if(cmp(countries[i], countries[i-1]) == 0){
        countries[i].rank = countries[i-1].rank;
      }
    }
  }
  
  for(int i = 0; i < N; i++){
    if(countries[i].num == K) {
      cout << countries[i].rank;
      break;
    }
  }
}

int main(void){
  ios_base::sync_with_stdio(false);        
  cin.tie(0);
  cout.tie(0);
  input();
  solve();
  return 0;
}

profile
차근차근 배워나가요

0개의 댓글