#include #define MAX 100000 int n, t[MAX], d[MAX]; int ind[MAX], temp[MAX]; int comp(int i, int j, int m, int e) { if(j > e) { return 1; } if(i > m) { return 0; } return t[ ind[i] ] * d[ ind[j] ] > t[ ind[j] ] * d[ ind[i] ]; } void sort(int s, int e) { if(s == e) { return; } int m = (s + e) / 2; sort(s , m); sort(m + 1, e); int i = s, j = m + 1, p = s; while(i <= m || j <= e) { if( comp(i, j, m, e) ) { temp[p] = ind[i]; i++; } else { temp[p] = ind[j]; j++; } p++; } for(p = s; p <= e; p++) { ind[p] = temp[p]; } return; } int main(void) { scanf("%d", &n); int i; for(i = 0; i < n; i++) { scanf("%d", &t[i]); } for(i = 0; i < n; i++) { scanf("%d", &d[i]); } for(i = 0; i < n; i++) { ind[i] = i; } sort(0, n - 1); for(i = 0; i < n; i++) { printf("%s%d", (i == 0 ? "" : " "), ind[i] + 1); } printf("\n"); return 0; }