use itertools::{Itertools, enumerate}; use proconio::input; fn main() { input! { t: usize, } let output = (0..t).map(|_| solve()).join("\n"); println!("{output}"); } fn solve() -> String { input! { n: usize, aa: [i64; n], bb: [i64; n], } let mut sum = aa.iter().sum::(); let mut max_sum = sum; let mut max_changes = 0; let sorted_indices = (0..n).sorted_unstable_by_key(|&i| aa[i]).collect_vec(); for (i, &j) in enumerate(&sorted_indices) { sum -= aa[j]; sum += bb[i]; if sum > max_sum { max_sum = sum; max_changes = i + 1; } } let mut answer = vec!['0'; n]; for &i in &sorted_indices[..max_changes] { answer[i] = '1'; } answer.iter().collect() }