CSES - Datatähti 2021 loppu - Results
Submission details
Task:Järjestäminen
Sender:Juho
Submission time:2021-01-23 19:49:54 +0200
Language: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>
using namespace std;

int n, t, luku, muisti, a, b, c;
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){
                a=sisallot[n-3];
                b=sisallot[n-2];
                c=sisallot[n-1];
                sisallot[n-3]=c;
                sisallot[n-2]=muisti;
                sisallot[n-1]=a;
                sisallot[n]=b;
                sijainnit[c]=n-3;
                sijainnit[muisti]=n-2;
                sijainnit[a]=n-1;
                sijainnit[b]=n;
            }else if(sijainnit[muisti]==muisti+1){
                a=sisallot[muisti+2];
                b=sisallot[muisti+3];
                c=sisallot[muisti+4];
                sisallot[muisti+2]=c;
                sisallot[muisti+1]=b;
                sisallot[muisti+3]=muisti;
                sisallot[muisti+4]=a;
                sijainnit[c]=muisti+2;
                sijainnit[b]=muisti+1;
                sijainnit[muisti]=muisti+3;
                sijainnit[a]=muisti+4;
                
            }else{
                
                a=sijainnit[muisti];
                b=sisallot[muisti];
                
                sijainnit[muisti]= muisti;
                
                sijainnit[b]=a;
                sisallot[a]=b;
                sisallot[muisti]= muisti;
                
                b=sisallot[muisti+1];
                c=sisallot[a+1];
                
                sijainnit[c]=muisti+1;
                sijainnit[b]=a+1;
                sisallot[muisti+1]=c;
                sisallot[a+1]=b;
                
                
                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
YESYESNONONONONONONONONOYESNON...

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
NONONONONONONONONONOYESNOYESNO...

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
NONONONOYESYESNONONONOYESNONON...

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
NONONONONONONONONONONONONONONO...