백준5462 POI 작성일 2019-05-07 | In IOI 문제 링크 http://icpc.me/5462 문제 출처 2009 IOI Day1 3번 시간복잡도 O(NT) 풀이 단순 구현 문제입니다. 문제별로 점수를 계산해준 뒤, 아래 코드처럼 필립보다 잘 본 사람의 수를 직접 카운팅해도 되고, 정렬을 이용해 해결할 수도 있습니다. 전체 코드 1234567891011121314151617181920212223242526272829303132333435363738394041#include <bits/stdc++.h> using namespace std; vector<int> user[2020]; int problemScore[2020]; int userScore[2020]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, t, p; cin >> n >> t >> p; for(int i=1; i<=t; i++){ problemScore[i] = n; } for(int i=1; i<=n; i++){ for(int j=0; j<t; j++){ int x; cin >> x; if(!x) continue; user[i].push_back(j+1); problemScore[j+1]--; } } for(int i=1; i<=n; i++){ for(auto x : user[i]){ userScore[i] += problemScore[x]; } } int ans = 1; for(int i=1; i<=n; i++){ if(i == p) continue; if(userScore[i] > userScore[p]) ans++; else if(userScore[i] == userScore[p]){ if(user[i].size() > user[p].size()) ans++; else if(user[i].size() == user[p].size() && i < p) ans++; } } cout << userScore[p] << " " << ans; }