풀이
주어진 조건대로 정렬해서 구현하면 된다.
코드
#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, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이