#include <bits/stdc++.h>
using namespace std;
int sign_dot(int x1, int y1, int x2, int y2) {
long long dot_prod = (long long) x1 * x2 + (long long) y1 * y2;
if (dot_prod < 0) {
return -1;
} else if (dot_prod == 0) {
return 0;
} else {
return 1;
}
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
int x[n];
int y[n];
int p[n];
for (int i = 0; i < n; i++) {
cin >> x[i] >> y[i];
p[i] = i + 1;
}
for (int i = 1; i < n - 1; i++) {
for (int j = i; j >= 1; j--) {
int x1 = x[j] - x[j - 1];
int y1 = y[j] - y[j - 1];
int x2 = x[j + 1] - x[j];
int y2 = y[j + 1] - y[j];
if (sign_dot(-x1, -y1, x2, y2) <= 0) {
swap(x[j], x[j + 1]);
swap(y[j], y[j + 1]);
swap(p[j], p[j + 1]);
}
}
}
for (int i = 0; i < n; i++) {
cout << p[i] << " ";
}
cout << endl;
}
1335B - Construct the String | 1004B - Sonya and Exhibition |
1397A - Juggling Letters | 985C - Liebig's Barrels |
115A - Party | 746B - Decoding |
1424G - Years | 1663A - Who Tested |
1073B - Vasya and Books | 195B - After Training |
455A - Boredom | 1099A - Snowball |
1651D - Nearest Excluded Points | 599A - Patrick and Shopping |
237A - Free Cash | 1615B - And It's Non-Zero |
1619E - MEX and Increments | 34B - Sale |
1436A - Reorder | 1363C - Game On Leaves |
1373C - Pluses and Minuses | 1173B - Nauuo and Chess |
318B - Strings of Power | 1625A - Ancient Civilization |
864A - Fair Game | 1663B - Mike's Sequence |
448A - Rewards | 1622A - Construct a Rectangle |
1620A - Equal or Not Equal | 1517A - Sum of 2050 |