QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#694872#6677. Puzzle: SashiganemonuiWA 0ms3592kbC++232.8kb2024-10-31 18:51:352024-10-31 18:51:36

Judging History

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

  • [2024-10-31 18:51:36]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3592kb
  • [2024-10-31 18:51:35]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
const int N=1e5+10;
int n,bi,bj;
int num=0;
struct sb{
    int r,c,h,w;
}que[N];


void solve(){
    cin>>n>>bi>>bj;
    int i1,j1,i2,j2,di,dj;
    if(n%2==0){
        if(bi<=n/2) di=n/2-bi;
        else di=n/2+1-bi;
        if(bj<=n/2) dj=n/2-bj;
        else dj=n/2+1-bj;
        int len=max(abs(di),abs(dj));
        i1=n/2-len;
        j1=n/2-len;
        i2=n/2+1+len;
        j2=n/2+1+len;
    }
    else{
        int mid=(n/2+1);
        di=mid-bi;
        dj=mid-bj;
        int len=max(abs(di),abs(dj));
        i1=mid-len;
        j1=mid-len;
        i2=mid+len;
        j2=mid+len;
    }
    
    if((dj>=0&&abs(dj)>=abs(di))||(di>=0&&abs(di)>=abs(dj))){
        for(int i=bi+1,j=bj+1;i<=i2&&j<=j2;i++,j++){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-bi);
            que[num].w=-(j-bj);
        }//往右下走的
        int pp=abs(que[num].h);
        auto& cur=que[num];
        if(num==0) cur.r=bi,cur.c=bj;
        for(int i=bi-1,j=cur.c+1;i>=i1&&j<=j2;i--,j++){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-bi-pp);
            que[num].w=-(j-cur.c+pp);
        }
        
        for(int i=cur.r+1,j=bj-1;i<=i2&&j>=j1;i++,j--){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-cur.r+pp);
            que[num].w=-(j-bj-pp);
        }
    }
    else{
        //往左上走
        for(int i=bi-1,j=bj-1;i>=i1&&j>=j1;i--,j--){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-bi);
            que[num].w=-(j-bj);
        }
        int pp=abs(que[num].h);
        auto& cur=que[num];
        if(num==0) cur.r=bi,cur.c=bj;
        for(int i=bi+1,j=cur.c-1;i<=i2&&j>=j1;i++,j--){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-bi+pp);
            que[num].w=-(j-cur.c-pp);
        }
        
        for(int i=cur.r-1,j=bj+1;i>=i1&&j<=j2;i--,j++){
            ++num;
            que[num].r=i,que[num].c=j;
            que[num].h=-(i-cur.r-pp);
            que[num].w=-(j-bj+pp);
        }
    }
    
    for(int i=i1-1,j=j1-1;i>0&&j>0;i--,j--){
        ++num;
        que[num].r=i,que[num].c=j;
        que[num].h=i2-i;que[num].w=j2-j;
    }
    for(int i=i2+1,j=j2+1;i<=n&&j<=n;i++,j++){
        ++num;
        que[num].r=i,que[num].c=j;
        que[num].h=i1-1;que[num].w=j1-1;
    }
    //cout<<i1<<" "<<j1<<" "<<i2<<" "<<j2<<endl;
    cout<<"YES"<<endl;
    cout<<num<<endl;
    for(int i=1;i<=num;i++) cout<<que[i].r<<" "<<que[i].c<<" "<<que[i].h<<" "<<que[i].w<<endl;
}

signed main(){
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    int t=1;
    //cin>>t;
    while(t--)
        solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3592kb

input:

5 3 4

output:

YES
4
2 3 1 1
4 2 -2 2
1 1 3 3
5 5 1 1

result:

wrong answer L shape #4 out of bounds. (test case 1)