CSES - Datatähti 2021 loppu - Results
Submission details
Task:Järjestäminen
Sender:Juho
Submission time:2021-01-23 18:37:51 +0200
Language:C++11
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#2--2details
#3--1, 2details
#4--1, 2details

Code

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

int n, t, luku, muisti;
bool totuus;
int sijainnit[101];
int sisallot[101];
int main() {
    cin>>t;
    for(int sj=0;sj<t;sj++){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>luku;
            sisallot[i]=luku;
            sijainnit[luku]=i;
        }
        muisti=1;
        while(muisti<n-3){
            if(sijainnit[muisti]==muisti){
                muisti++;
            }else if(sijainnit[muisti]==n){
                swap(sisallot[n], sisallot[n-2]);
                swap(sisallot[n-1], sisallot[n-3]);
                sijainnit[sisallot[n]]=n;
                sijainnit[sisallot[n-1]]=n-1;
                sijainnit[sisallot[n-2]]=n-2;
                sijainnit[sisallot[n-3]]=n-3;
            }else if(sijainnit[muisti]==muisti+1){
                swap(sisallot[muisti+1], sisallot[muisti+3]);
                swap(sisallot[muisti+2], sisallot[muisti+4]);
                sijainnit[sisallot[muisti+1]]=muisti+1;
                sijainnit[sisallot[muisti+2]]=muisti+2;
                sijainnit[sisallot[muisti+3]]=muisti+3;
                sijainnit[sisallot[muisti+4]]=muisti+4;
            }else{
                swap(sijainnit[muisti],sijainnit[sisallot[muisti]]);
                swap(sijainnit[sisallot[sijainnit[muisti]+1]], sijainnit[sisallot[muisti+1]]);
                sisallot[sijainnit[muisti]]=muisti;
                sisallot[sijainnit[sisallot[muisti]]]=sisallot[muisti];
                sisallot[sijainnit[sisallot[sijainnit[muisti]+1]]]=sisallot[sijainnit[muisti]+1];
                sisallot[sijainnit[sisallot[muisti+1]]]=sisallot[muisti+1];
                muisti++;
            }
            
        }
        if(n>3){
                if(sijainnit[n-3]==n||sijainnit[n-3]==n-2){
                    cout<<"NO";
                }else if(sijainnit[n-3]==n-3){
                    if(sijainnit[n-2]==n-2&&sijainnit[n-1]==n-1){
                        cout<<"YES";
                    }else{
                        cout<<"NO";
                    }
                }else{
                    if(sijainnit[n]==n-2&&sijainnit[n-2]==n){
                        cout<<"YES";
                    }else{
                        cout<<"NO";
                    }
                }
            }else{
                totuus = true;
                for(int i=1;i<=n;i++){
                    if(sisallot[i]!=i){
                        totuus = false;
                    }
                }
                if(totuus){
                    cout<<"YES";
                }else{
                    cout<<"NO";
                }
            }
    }
}

Test details

Test 1

Group: 1, 2

Verdict:

input
153
1
1
2
1 2
...

correct output
YES
YES
NO
NO
NO
...

user output
YESYESNONONONONONONONONONONONO...
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
(empty)

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
(empty)

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
(empty)