Codeforces Round #771 (Div. 2), problem: (B) Odd Swap Sort
阿新 • • 發佈:2022-02-15
就是給你個序列,給他整成升序的,每次操作可以使相鄰兩個數交換位置,交換條件是二數之和為奇數
結果只需輸出是否可以整成升序的
思路: 需要奇數偶數分開討論, 如果奇數和偶數都分別是單增的那麼可行, 反之為no
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef pair<int,int> PII; const int N = 1e5+10; int a[N]; int main() { int t; cin>> t; while(t --) { bool f = 0; int n; cin >> n; for(int i=0; i < n; i ++)cin >> a[i]; int odd=0, even=0; for(int i = 0; i <n; i ++) { if(a[i]%2) { if(odd>a[i]) { f=1; break; } odd=a[i]; } else { if(even>a[i]) { f=1; break; } even=a[i]; } }if(f)cout << "NO\n"; else cout << "YES\n"; } return 0; }