CSES - Datatähti Open 2021 - Results
Submission details
Task:Sorting
Sender:etaha
Submission time:2021-01-31 16:11:40 +0200
Language:C++11
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
Test results
testverdicttimegroup
#10.01 s1, 2details
#20.01 s2details
#30.01 s1, 2details
#40.01 s1, 2details

Compiler report

input/code.cpp: In function 'void solve()':
input/code.cpp:34:17: warning: unused variable 'j' [-Wunused-variable]
  lint a,b,c,x,i,j,k,n;
                 ^
input/code.cpp:34:19: warning: unused variable 'k' [-Wunused-variable]
  lint a,b,c,x,i,j,k,n;
                   ^

Code

//debug icin gdb kullanmayi dene
#include<bits/stdc++.h>
using namespace std;
#define mods 1000000007
#define pb push_back
#define mp make_pair
#define st first
#define nd second
#define rs resize
#define pii pair<lint,lint> 
#define piii pair<lint,pair<lint,lint> > 
#define inf LLONG_MAX-7
#define vvL vector<vector<lint> > 
#define vvB vector<vector<bool> > 
#define vvvL vector<vector<vector<lint> > > 
#define vL vector<lint> 
#define vpii vector<pii> 
#define vB vector<bool> 
typedef long long int lint;
typedef unsigned long long int ulint;
lint fastpow(lint tab,lint us){
	if(tab==0) return 0;
	if(tab==1) return 1;
	if(us==0) return 1;
	if(us==1) return tab%mods;
	tab%=mods;
	if(us%2==1) return tab*fastpow(tab,us-1)%mods;
	lint a=fastpow(tab,us/2)%mods;
	return a*a%mods;
}
lint t=1;

void solve(){
	lint a,b,c,x,i,j,k,n;
	cin>>n;
	vL d(n+2),ind(n+2);
	for(i=1;i<=n;i++){
		cin>>d[i];
		ind[d[i]]=i;

	}
/*	cout<<"d: "<<endl;
	for(i=1;i<=n;i++) cout<<d[i]<<" ";
	cout<<endl<<"ind: "<<endl;
	for(i=1;i<=n;i++) cout<<ind[i]<<" ";
	cout<<endl<<endl;//*/
	if(n==1){cout<<"YES"<<endl; return;}
	for(i=1;i<=n;i++){
		if(d[i]==i) continue;
//		cout<<i<<endl;
		if(i>=n-2){cout<<"NO"<<endl; return;}
		if(ind[i]==i+1){
			if(i>=n-3){cout<<"NO"<<endl; return;}
			a=d[i],b=d[i+1],c=d[i+2],x=d[i+3];
			swap(d[i],d[i+2]);
			swap(d[i+1],d[i+3]);
			swap(ind[a],ind[c]);
			swap(ind[b],ind[x]);	
/*			cout<<"d: "<<endl;
			for(j=1;j<=n;j++) cout<<d[j]<<" ";
			cout<<endl<<"ind: "<<endl;	
			for(j=1;j<=n;j++) cout<<ind[j]<<" ";
			cout<<endl<<endl;//*/
		}else if(ind[i]==n){
			if(i>=n-3){cout<<"NO"<<endl; return;}
			a=d[n-4],b=d[n-3],c=d[n-2],x=d[n-1];
			swap(d[n-4],d[n-2]);
			swap(d[n-3],d[n-1]);
			swap(ind[a],ind[c]);
			swap(ind[b],ind[x]);	
/*			cout<<"d: "<<endl;
			for(j=1;j<=n;j++) cout<<d[j]<<" ";
			cout<<endl<<"ind: "<<endl;	
			for(j=1;j<=n;j++) cout<<ind[j]<<" ";
			cout<<endl<<endl;//*/
		}
		a=d[i],b=d[i+1],c=i,x=d[ind[i]+1];
		swap(d[i],d[ind[i]]);
		swap(d[i+1],d[ind[i]+1]);
		swap(ind[a],ind[c]);
		swap(ind[b],ind[x]);
/*		cout<<"d: "<<endl;
		for(j=1;j<=n;j++) cout<<d[j]<<" ";
		cout<<endl<<"ind: "<<endl;
		for(j=1;j<=n;j++) cout<<ind[j]<<" ";
		cout<<endl<<endl;//*/
	}
	cout<<"YES"<<endl;
	return;
}

int main(){
//	freopen("in.txt","r",stdin);freopen("out.txt","w",stdout);
	ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
	cin>>t;
	while(t--) solve();
	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
...

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

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

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