답안 #737085

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
737085 2023-05-06T15:02:30 Z ibm2006 Gardening (RMI21_gardening) C++14
0 / 100
10 ms 596 KB
#include<bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll n,m,i,j,x,y,k,t,e,r,l;
vector<vector<ll>> a;
void f(ll x,ll y,ll z,ll w,ll k)
{
    //printf("%lld %lld %lld %lld %lld \n",x,y,z,w,k);
    ll i,j,n,m,q;
    n=z-x+1;
    m=w-y+1;
    if(n==2)
    {
        for(j=y;j<=w;j+=2)
        {
            t++;
            a[x][j]=t;
            a[z][j]=t;
            a[x][j+1]=t;
            a[z][j+1]=t;
        }
        return;
    }
    q=-1;
    for(i=0;i<=n-4;i+=2)
    {
        /*if(1+i/2*m/2+m/2-1<=k&&k<=1+i/2*m/2+(n/2-i-1)*(m/2-1)&&k!=m/2*i/2+(n/2-i-1)*(m/2-1))
        {
            q=i;
            break;
        }*/
        if(m==n-i)
        {
            if(1+i/2*m/2+m/2-1<=k&&k<=1+i/2*m/2+(n/2-i/2-1)*(m/2-1)&&k!=m/2*i/2+(n/2-i/2-1)*(m/2-1)&&(1+i/2*m/2+m/2>k||1+i/2*m/2+m<=k))
        {
            q=i;
            break;
        }
        }
        else
        {
            if(1+i/2*m/2+m/2-1<=k&&k<=1+i/2*m/2+(n/2-i/2-1)*(m/2-1)&&k!=m/2*i/2+(n/2-i/2-1)*(m/2-1))
        {
            q=i;
            break;
        }
        }
    }
    //printf("%lld\n",q);
    for(i=y;i<=w;i+=2)
    {
        for(j=0;j<q;j+=2)
        {
            t++;
            a[x+j][i]=t;
            a[x+j+1][i+1]=t;
            a[x+j][i+1]=t;
            a[x+j+1][i]=t;
        }
    }
    if(q!=-1)
    {t++;
    for(i=y;i<=w;i++)
    {

        a[x+q][i]=t;
        a[z][i]=t;

    }
    for(i=x+q;i<=z;i++)
    {
        a[i][y]=t;
        a[i][w]=t;
    }}
    if(q!=-1)
    {
        f(x+q+1,y+1,z-1,w-1,k-1-m/2*q/2);
        return;
    }
    for(i=0;i<=m-4;i+=2)
    {
        if(n==m-i)
        {
            if(1+i/2*n/2+n/2-1<=k&&k<=1+i/2*n/2+(m/2-i/2-1)*(n/2-1)&&k!=n/2*i/2+(m/2-i/2-1)*(n/2-1)&&(1+i/2*n/2+n/2>k||1+i/2*n/2+n<=k))
        {
            q=i;
            break;
        }
        }
        else
        {
            if(1+i/2*n/2+n/2-1<=k&&k<=1+i/2*n/2+(m/2-i/2-1)*(n/2-1)&&k!=n/2*i/2+(m/2-i/2-1)*(n/2-1))
        {
            q=i;
            break;
        }
        }
    }
    if(q!=-1)
    {for(i=x;i<=z;i+=2)
        for(j=0;j<q;j+=2)
    {
        t++;
        a[i][j+y]=t;
        a[i+1][j+y+1]=t;
        a[i][j+y+1]=t;
        a[i+1][j+y]=t;
    }
    t++;
    for(i=x;i<=z;i++)
    {
        a[i][w]=t;
        a[i][y+q]=t;
    }
    for(i=y+q;i<=w;i++)
    {
        a[z][i]=t;
        a[x][i]=t;
    }
    //printf("%lld\n",q);
    f(x+1,y+q+1,z-1,w-1,k-1-n/2*q/2);
    return;
    }
    q=n-4;
    for(i=y;i<=w;i+=2)
    {
        for(j=0;j<q;j+=2)
        {
            t++;
            a[x+j][i]=t;
            a[x+j+1][i+1]=t;
            a[x+j][i+1]=t;
            a[x+j+1][i]=t;
        }
    }
    k-=q/2*m/2;
    k-=m/2;
    q=m-k*2;
    if(q!=0)
    t++;
    for(i=z-3;i<=z;i++)
        for(j=0;j<q;j++)
    {
        a[i][j+y]=t;
    }
    for(i=z-3;i<=z;i+=2)
        for(j=y+q;j<=w;j+=2)
    {
        t++;
        a[i][j]=t;
        a[i][j+1]=t;
        a[i+1][j]=t;
        a[i+1][j+1]=t;
    }
    for(j=0;j<q-2;j+=2)
    {
        t++;
        a[z-2][y+1+j]=t;
        a[z-1][y+1+j]=t;
        a[z-2][y+2+j]=t;
        a[z-1][y+2+j]=t;
    }
    return;
}
int main()
{
    scanf("%lld",&e);
    for(l=0;l<e;l++)
    {
        r=0;
        t=0;
        a.clear();
        scanf("%lld %lld %lld",&n,&m,&k);

        a.resize(min(n,m)+1);
        for(i=1;i<=n;i++)
            a[i].resize(max(n,m)+1);
        if(n%2==1||m%2==1)
        {
            printf("NO\n");
            continue;
        }
        if(k==n/2*m/2)
        {
            for(i=1;i<=n;i+=2)
            {
                for(j=1;j<=m;j+=2)
                {
                    t++;
                    a[i][j]=t;
                    a[i][j+1]=t;
                    a[i+1][j]=t;
                    a[i+1][j+1]=t;
                }
            }
            printf("YES\n");
            for(i=1;i<=n;i++)
            {
                for(j=1;j<=m;j++)
                    printf("%lld ",a[i][j]);
                printf("\n");
            }
            continue;
        }
        if(n==m)
        {
            if(k!=n/2)
            {
                if(k<n||k>=(n*m/4-1))
                {
                    printf("NO\n");
                    continue;
                }
            }
            f(1,1,n,m,k);
        }
        else
        {
            if(n>m)
            {
                n^=m^=n^=m;
                r=1;
            }
            if(k<max(n/2,m/2)||k>=(n*m/4-1))
            {
                printf("NO\n");
                continue;
            }
            f(1,1,n,m,k);
        }
        printf("YES\n");
        if(r==0)
        {for(i=1;i<=n;i++)
        {for(j=1;j<=m;j++)
        printf("%lld ",a[i][j]);
        printf("\n");
        }
        }
        else
        {
            for(i=1;i<=m;i++)
                {for(j=1;j<=n;j++)
            {
                printf("%lld ",a[j][i]);
            }
            printf("\n");
                }
        }
    }
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:167:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  167 |     scanf("%lld",&e);
      |     ~~~~~^~~~~~~~~~~
Main.cpp:173:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
  173 |         scanf("%lld %lld %lld",&n,&m,&k);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Failed 10 ms 596 KB Incorrect output
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 0 ms 340 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -