CSES - Datatähti 2021 loppu - Results
Submission details
Task:Järjestäminen
Sender:caro
Submission time:2021-01-23 19:52:59 +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

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:26:17: warning: 'np' may be used uninitialized in this function [-Wmaybe-uninitialized]
             int np;
                 ^~

Code

#include <bits/stdc++.h>
using namespace std;
int main(){
    int num;
    cin >> num;
    for(int i = 0; i < num; i++){
        int n;
        cin >> n;
        int t[n];
        int sorted = 1;
        for(int i = 0; i < n; i++){
            cin >> t[i];
            if(i > 0) {
                if(t[i - 1] > t[i]) sorted = 0;
            }
        }
        if(sorted){
            printf("YES\n");
            continue;
        }
        else if(!sorted && n < 4){
            printf("NO\n");
            continue;
        }
        for(int j = 0; j < n - 4; j++){
            int np;
            for(int k = j; k < n; k++){
                if(t[k] == j + 1) np = k;
            }
            if(np == n - 1){
                int as = t[n - 1];    
                t[n - 1] = t[n - 3];
                t[n - 3] = as;

                int bs = t[n - 2];
                t[n - 2] = t[n - 4];
                t[n - 4] = bs;

                int cs = t[n - 3];
                t[n - 3] = t[j];
                t[j] = cs;

                int ds = t[n - 2];
                t[n - 2] = t[j + 1];
                t[j + 1] = ds;
            }
            else if(np == j){
                
            }
            else if(np == j + 1){
                int as = t[np];
                t[np] = t[n - 2];
                t[n - 2] = as;

                int bs = t[np + 1];
                t[np + 1] = t[n - 1];
                t[n - 1] = bs;

                int cs = t[n - 2];
                t[n - 2] = t[j];
                t[j] = cs;

                int ds = t[n - 1];
                t[n - 1] = t[j + 1];
                t[j + 1] = ds;
            }
            else {
                int as = t[np];
                t[np] = t[j];
                t[j] = as;

                int bs = t[np + 1];
                t[np + 1] = t[j + 1];
                t[j + 1] = bs;
            }
        }
        if((t[n - 4] < t[n - 3] && t[n - 3] < t[n - 2] && t[n - 2] < t[n - 1]) ||
           (t[n - 4] < t[n - 3] && t[n - 1] < t[n - 4] && t[n - 2] < t[n - 1])) printf("YES\n");
        else printf("NO\n");
    }
    return 0;
}

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