fork download
  1. //Quiz 2 Rizki Farih Ardian
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main() {
  6. int t;
  7. cin >> t;
  8.  
  9. while (t--) {
  10. int n;
  11. cin >> n;
  12.  
  13. vector<long long> a(n);
  14. vector<int> locked(n);
  15.  
  16. for (int i = 0; i < n; i++) {
  17. cin >> a[i];
  18. }
  19.  
  20. for (int i = 0; i < n; i++) {
  21. cin >> locked[i];
  22. }
  23.  
  24. // Kumpulkan nilai pada posisi unlocked
  25. vector<long long> unlocked_values;
  26. for (int i = 0; i < n; i++) {
  27. if (locked[i] == 0) {
  28. unlocked_values.push_back(a[i]);
  29. }
  30. }
  31.  
  32. sort(unlocked_values.begin(), unlocked_values.end(), greater<long long>());
  33.  
  34. int idx = 0;
  35. for (int i = 0; i < n; i++) {
  36. if (locked[i] == 0) {
  37. a[i] = unlocked_values[idx++];
  38. }
  39. }
  40.  
  41. for (int i = 0; i < n; i++) {
  42. cout << a[i] << " ";
  43. }
  44. cout << endl;
  45. }
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0.01s 5288KB
stdin
5
3
1 3 2
0 0 0
4
2 -3 4 -1
1 1 1 1
7
-8 4 -2 -6 4 7 1
1 0 0 0 1 1 0
5
0 1 -4 6 3
0 0 0 1 1
6
-1 7 10 4 -8 -1
1 0 0 0 0 1
stdout
3 2 1 
2 -3 4 -1 
-8 4 1 -2 4 7 -6 
1 0 -4 6 3 
-1 10 7 4 -8 -1