3758 : KCPC

풀이

주어진 조건대로 정렬해서 구현하면 된다.

코드

#include <bits/stdc++.h>
using namespace std;

struct abc {
	int sco, sub, tim, idx;
	bool operator <(abc a)const {
		if (sco == a.sco) {
			if (sub == a.sub) {
				return tim < a.tim;
			}
			return sub < a.sub;
		}
		return sco > a.sco;
	}
};

int main() {
	int tc;
	scanf("%d", &tc);
	while (tc--) {
		int n, k, t, m;
		abc a[103][103];
		memset(a, 0, sizeof(a));
		scanf("%d %d %d %d", &n, &k, &t, &m);
		for (int i = 1; i <= m; i++) {
			int id, pnum, score;
			scanf("%d %d %d", &id, &pnum, &score);
			a[id][pnum].sco = max(a[id][pnum].sco, score);
			a[id][pnum].sub++;
			a[id][pnum].tim = i;
		}
		
		abc b[103];
		memset(b, 0, sizeof(b));
		for (int i = 1; i <= n; i++) {
			//b[i].tim = 0;
			for (int j = 1; j <= k; j++) {
				b[i].sco += a[i][j].sco;
				b[i].sub += a[i][j].sub;
				b[i].tim = max(b[i].tim, a[i][j].tim);
			}
			b[i].idx = i;
		}
		
		sort(b+1, b+1+n);
		
		for (int i = 1; i <= n; i++) {
			if (b[i].idx == t) {
				printf("%d\n", i);
				break;
			}
		}
	} 
	
	return 0;
}

/*
2
3 4 3 5
1 1 30
2 3 30
1 2 40
1 2 20
3 1 70
4 4 1 10
1 1 50
2 1 20
1 1 80
3 1 0
1 2 20
2 2 10
4 3 0
2 1 0
2 2 100
1 4 20

*/

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-09-17 12:20

Read more posts by this author