QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#397234#5305. Oscar is All You NeedmarherWA 1ms3640kbC++171.2kb2024-04-23 20:06:272024-04-23 20:06:29

Judging History

你现在查看的是最新测评结果

  • [2024-04-23 20:06:29]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3640kb
  • [2024-04-23 20:06:27]
  • 提交

answer

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e3+50;

struct node
{
    int l,r;
}p[N];

int T,n,a[N],tot,b[N];

void print()
{
    cout<<tot<<'\n';
    for(int i=1;i<=tot;i++)cout<<p[i].l<<' '<<p[i].r<<'\n';
    // for(int i=1;i<=n;i++)cout<<a[i]<<' ';
}

void mk(int l,int r)
{
    int cc=0;
    for(int i=n-r+1;i<=n;i++)b[++cc]=a[i];
    for(int i=l+1;i<=n-r;i++)b[++cc]=a[i];
    for(int i=1;i<=l;i++)b[++cc]=a[i];
    swap(a,b);p[++tot]=(node){l,r};
}

void sol()
{
    cin>>n;tot=0;
    for(int i=1;i<=n;i++)cin>>a[i];
    if(n==3)
    {
        if(a[1]>a[3])mk(1,1);
        return;
    }
    int pos=1;
    for(int i=2;i<=n;i++)if(a[i]==1)pos=i;
    if(pos==2)mk(2,1),mk(1,1);
    if(pos>2)mk(1,n-pos+1);
    for(int i=2;i<=n;i++)if(a[i]==n)pos=i;
    if(pos>=3)mk(1,1),mk(pos-1,1);
    for(int i=2;i<n;i++)
    {
        int x=a[n],t=1;
        for(int j=1;j<=i;j++)if(a[j]<x)t=j;
        if(t==i&&n==i+1)continue;
        if(t>=n-2)break;
        mk(t,2);mk(1,t);
    }
    if(a[n]==n)return;
    mk(1,1);mk(n-2,1);mk(2,n-3);mk(n-3,1);mk(1,n-2);
}

main()
{
    // freopen("in.txt","r",stdin);
    cin>>T;
    while(T--)sol(),print();
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3640kb

input:

2
3
1 3 2
5
4 1 2 3 5

output:

0
10
2 1
1 1
1 1
4 1
1 2
1 1
1 2
1 1
1 2
1 1

result:

wrong answer x+y is greater than n