aboutsummaryrefslogtreecommitdiff
path: root/contests/Round#788/A.cpp
blob: ada803650e9d18d2d7be3f281334a1d84de452ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<bits/stdc++.h>

using namespace std;

string solve(vector<int> v) {
  int p = 0;
  int n = 0;
  for(int i = 0; i < v.size(); i++) {
    if(v[i] > 0) {
      p++;
    }
    else{
      n++;
    }
  }
  int loop = min(p, n);
  int loop1 = loop;
  for(int i = 0; i < v.size(); i++) {
    if(v[i] > 0 && loop != 0) {
      v[i] = -v[i];
      loop--;
    }
  }
  loop = min(p, n);
  for(int i = v.size() - 1; i > 0; i--) {
    if(v[i] < 0 && loop1 != 0) {
      v[i] = -v[i];
      loop1--;
    }
  }
  if(is_sorted(v.begin(), v.end())) {
    return "YES";
  }
  return "NO";
}


int main () {
  int tt;
  cin >> tt;
  while (tt--) {
    int n;
    cin >> n;
    vector<int> v(n);
    for(auto &x : v) {
      cin >> x;
    }
    cout << solve(v) << endl;
  }
}