#include<bits/stdc++.h>
using namespace std;
int n;
struct cj {
long long g, s, b;
int id;
} p[10001], p1[10001];
bool cmp1(cj x, cj y) {
long long a = x.g;
long long b = y.g;
return a > b ;
}
bool cmp2(cj x, cj y) {
long long a = x.s;
long long b = y.s;
return a > b ;
}
bool cmp3(cj x, cj y) {
long long a = x.b;
long long b = y.b;
return a > b ;
}
int main() {
long long a1[10001], b1[10001], c1[10001];
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> p[i].g >> p[i].s >> p[i].b;
a1[i] = INT_MAX;
b1[i] = INT_MAX;
c1[i] = INT_MAX;
p1[i].g = p[i].g;
p1[i].s = p[i].s;
p1[i].b = p[i].b;
p[i].id = i;
p1[i].id = i;
}
sort(p + 1, p + 1 + n, cmp1);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (p1[p1[i].id].g == p[j].g) {
a1[i] = j;
break;
}
}
}
sort(p + 1, p + 1 + n, cmp2);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (p1[p1[i].id].s == p[j].s) {
b1[i] = j;
break;
}
}
}
sort(p + 1, p + 1 + n, cmp3);
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++) {
if (p1[p1[i].id].b == p[j].b) {
c1[i] = j;
break;
}
}
}
for (int i = 1; i <= n; i++) {
cout << min(a1[i], min(b1[i], c1[i])) << endl;
}
return 0;
}
题目的思路(应该不是思路的问题