CSES - Datatähti 2021 loppu - Results
Submission details
Task:Järjestäminen
Sender:Epe
Submission time:2021-01-23 19:08:01 +0200
Language:C++ (C++11)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#20.02 s2details
#30.01 s1, 2details
#40.01 s1, 2details

Code

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;

int arr[100001]; //arr
int pos[100001]; //i to p
int n;
int chk(){
    for(int i = 1; i <= n; i++){
        if(i != arr[i]){
            return i-1;
        }
    }
    return n;
}
bool swp(int a, int b){
    if(a < 0) return 0;
    swap(arr[a], arr[b]);
    pos[arr[a]] = a;
    pos[arr[b]] = b;

    swap(arr[a+1], arr[b+1]);
    pos[arr[a+1]] = a+1;
    pos[arr[b+1]] = b+1;
    return 1;
}
int main(){
    int q;
    cin >> q;
    for(int i = 0; i < q; i++){
        cin >> n;
        for(int p = 1; p <= n; p++){
            int t;
            cin >> t;
            arr[p] = t;
            pos[t] = p;
        }
        int s = chk();

        while(s < n){
            int t = s+1;
            if(pos[t] == t){
                s++;
                continue;
            }
            int apos = pos[t];
            if(apos < n){
                swp(apos, t);
            } else {
                if(n-s > 4){
                    swp(apos,apos-2);
                } else {
                    cout << "NO\n";
                    break;
                }
            }
        }
        if(s == n){
            cout << "YES\n";
        }
    }
}

Test details

Test 1

Group: 1, 2

Verdict:

input
153
1
1
2
1 2
...

correct output
YES
YES
NO
NO
NO
...

user output
YES
YES
NO
NO
YES
...
Truncated

Test 2

Group: 2

Verdict:

input
1000
59
35 29 32 50 11 15 9 21 19 45 2...

correct output
YES
NO
YES
NO
YES
...

user output
NO
NO
NO
NO
NO
...
Truncated

Test 3

Group: 1, 2

Verdict:

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
NO
NO
NO
...
Truncated

Test 4

Group: 1, 2

Verdict:

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
NO
NO
NO
...
Truncated