| Task: | Sorting |
| Sender: | dynam1c |
| Submission time: | 2021-01-30 18:41:33 +0200 |
| Language: | C++ (C++17) |
| Status: | READY |
| Result: | 0 |
| group | verdict | score |
|---|---|---|
| #1 | WRONG ANSWER | 0 |
| #2 | WRONG ANSWER | 0 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | WRONG ANSWER | 0.01 s | 1, 2 | details |
| #2 | WRONG ANSWER | 0.01 s | 2 | details |
| #3 | WRONG ANSWER | 0.01 s | 1, 2 | details |
| #4 | WRONG ANSWER | 0.01 s | 1, 2 | details |
Compiler report
input/code.cpp: In lambda function:
input/code.cpp:38:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int m = l+r>>1;
~^~Code
//#pragma comment(linker, "/stack:200000000")
//#pragma GCC optimize("Ofast")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl "\n"
#define all(c) (c).begin(),(c).end()
// if you're reading this i hope to meet you in IOI 2021
// RECHECK CONSTRAINTS AFTER MAKING A REDUCTION
void solve() {
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++)
cin >> arr[i];
if (n == 4) {
cout << (arr == vector<int>{1, 2, 3, 4} or arr == vector<int>{3, 4, 1, 2} ? "YES" : "NO") << endl;
return;
}
if (n < 4) {
for (int i = 0; i < n; i++)
if (arr[i] != i+1) {
cout << "NO\n";
return;
}
cout << "YES\n";
return;
}
function<ll(int, int)> inv = [&](int l, int r) -> ll {
if (r-l == 1) return 0;
int m = l+r>>1;
ll res = inv(l, m) + inv(m, r);
for (int i = l; i < m; i++)
res += lower_bound(arr.begin()+m, arr.begin()+r, arr[i])-(arr.begin()+m);
return res;
};
cout << (inv(0, n)&1 ? "NO" : "YES") << endl;
}
signed main() {
// freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
std::ios::sync_with_stdio(false);
cin.tie(0);
int n;
cin >> n;
for (int i = 0; i < n; i++) solve();
}
/* --- PSolving ---
* Simplifying (getting rid of variables, conditions, code logic, etc.)
* Reframing
* Solving a subtask (subgoal, aux. problem, removing a condition or fixing a parameter, etc.)
* Inducing
* Divide and conquer
* Working backwards
* Visual intuition
* !! Reductions don't have to be specializations, they can be generalizations
*/
Test details
Test 1
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 153 1 1 2 1 2 ... |
| correct output |
|---|
| YES YES NO NO NO ... |
| user output |
|---|
| YES YES NO NO NO ... Truncated |
Test 2
Group: 2
Verdict: WRONG ANSWER
| input |
|---|
| 1000 59 35 29 32 50 11 15 9 21 19 45 2... |
| correct output |
|---|
| YES NO YES NO YES ... |
| user output |
|---|
| YES YES NO YES YES ... Truncated |
Test 3
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 720 6 1 6 4 5 2 3 6 6 3 2 1 5 4 ... |
| correct output |
|---|
| YES NO NO NO YES ... |
| user output |
|---|
| NO NO YES YES YES ... Truncated |
Test 4
Group: 1, 2
Verdict: WRONG ANSWER
| input |
|---|
| 1000 8 7 4 2 8 6 3 5 1 8 3 8 2 7 5 4 6 1 ... |
| correct output |
|---|
| NO NO YES NO YES ... |
| user output |
|---|
| NO NO YES YES NO ... Truncated |
