Submission #2923698


Source Code Expand

#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <string>
using namespace std;
typedef long long ll;
typedef double D;
typedef pair<ll,ll> P;
#define INF 100000000000
#define M 1000000007
#define F first
#define S second
#define PB push_back
vector<P>ans;
int n,a[55];
void solve(void){
    for(int i=1;i<=n;i++){
        if(a[i]==1){
           for(int j=i-1;j>=1;j--){
               ans.PB(P(j+1,j));
               swap(a[j+1],a[j]);
           }
           break;
        }
    }
    for(int i=1;i<=n;i++){
        if(a[i]==2){
            if(i%2){
                for(int j=i-2;j>=1;j-=2){
                    ans.PB(P(j+2,j));
                    swap(a[j+2],a[j]);
                }
                ans.PB(P(2,3));
                swap(a[2],a[3]);
            }else{
                for(int j=i-2;j>=1;j-=2){
                    ans.PB(P(j+2,j));
                    swap(a[j+2],a[j]);
                }
                ans.PB(P(1,2));
                swap(a[1],a[2]);
            }
            break;
        }
    }
    for(int i=1;i<n;i++){
        if(a[i]==n){
            for(int j=4;j<=i;j++){
                ans.PB(P(j-2,j));
                ans.PB(P(j-1,j));
                swap(a[j-2],a[j]);
                swap(a[j-1],a[j]);
            }
            for(int j=i+1;j<=n;j++){
                ans.PB(P(j-3,j-2));
                ans.PB(P(j,j-2));
                ans.PB(P(j-3,j-2));
                ans.PB(P(j-2,j-1));
                ans.PB(P(j,j-2));
                swap(a[j-3],a[j]);
                swap(a[j-2],a[j]);
                swap(a[j-1],a[j]);
            }
            break;
        }
    }
}
int main(void){
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(;n>3;n--){
        solve();
    }
    if(n==3){
        if(a[3]==1){
            ans.PB(P(2,3));
            swap(a[2],a[3]);
        }
        if(a[1]==1){
            ans.PB(P(1,2));
            swap(a[1],a[2]);
        }
        if(a[1]==3){
            ans.PB(P(1,3));
            swap(a[1],a[3]);
        }
    }
    if(a[2]==1){
        ans.PB(P(1,2));
        swap(a[1],a[2]);
    }
    cout<<ans.size()<<endl;
    for(int i=0;i<ans.size();i++){
        cout<<ans[i].F<<' '<<ans[i].S<<endl;
    }
}

Submission Info

Submission Time
Task I - そーっとソート
User nxteru
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2448 Byte
Status WA
Exec Time 8 ms
Memory 512 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
AC × 1
AC × 5
WA × 22
Set Name Test Cases
Sample example_0.txt
All backet_0.txt, backet_1.txt, backet_2.txt, backet_3.txt, backet_4.txt, corner_0.txt, corner_1.txt, corner_2.txt, example_0.txt, maxrand_0.txt, maxrand_1.txt, maxrand_2.txt, random_0.txt, random_1.txt, random_2.txt, random_3.txt, random_4.txt, shortswap_0.txt, shortswap_1.txt, shortswap_rev_0.txt, shortswap_rev_1.txt, smallrand_0.txt, smallrand_1.txt, smallrand_2.txt, smallrand_3.txt, smallrand_4.txt, example_0.txt
Case Name Status Exec Time Memory
backet_0.txt WA 7 ms 384 KB
backet_1.txt WA 6 ms 384 KB
backet_2.txt WA 2 ms 256 KB
backet_3.txt WA 3 ms 256 KB
backet_4.txt WA 4 ms 256 KB
corner_0.txt AC 1 ms 256 KB
corner_1.txt AC 1 ms 256 KB
corner_2.txt WA 7 ms 384 KB
example_0.txt AC 1 ms 256 KB
maxrand_0.txt WA 8 ms 512 KB
maxrand_1.txt WA 7 ms 384 KB
maxrand_2.txt WA 7 ms 384 KB
random_0.txt WA 2 ms 256 KB
random_1.txt WA 8 ms 384 KB
random_2.txt WA 1 ms 256 KB
random_3.txt WA 3 ms 256 KB
random_4.txt WA 5 ms 384 KB
shortswap_0.txt WA 8 ms 384 KB
shortswap_1.txt WA 7 ms 384 KB
shortswap_rev_0.txt WA 8 ms 512 KB
shortswap_rev_1.txt WA 8 ms 512 KB
smallrand_0.txt AC 1 ms 256 KB
smallrand_1.txt WA 1 ms 256 KB
smallrand_2.txt WA 1 ms 256 KB
smallrand_3.txt WA 1 ms 256 KB
smallrand_4.txt WA 1 ms 256 KB