답안 #859582

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
859582 2023-10-10T10:38:29 Z lucri Gardening (RMI21_gardening) C++17
11 / 100
200 ms 856 KB
#include <bits/stdc++.h>
using namespace std;
int test,n,m,k;
vector<vector<int>>a;
bool completeaza(int i,int j,int ii,int jj,int k)
{
    int n=ii-i+1;
    int m=jj-j+1;
    if(k<n*m/4-n-m)
    {
        for(int l=i;l<=ii;++l)
            a[l][j]=a[l][jj]=k;
        for(int c=j;c<=jj;++c)
            a[i][c]=a[ii][c]=k;
        return completeaza(i+1,j+1,ii-1,jj-1,k-1);
    }
    else if(k==n*m/4-n-m)
    {
        int iii=ii,jjj=jj;
        if(iii-i>jjj-j)
            iii-=2;
        else
            jjj-=2;
        for(int l=i+1;l<=i+5;++l)
            a[l][j]=a[l][jjj]=k;
        for(int c=j+1;c<=j+5;++c)
            a[i][c]=a[iii][c]=k;
        --k;
    }
    else if(k<n*m/4)
    {
        int iii=ii,jjj=jj;
        while((n*m-(k-1)*4)!=(iii-i)*2+(jjj-j)*2)
        {
            if(iii-i>jjj-j)
                iii-=2;
            else
                jjj-=2;
        }
        for(int l=i;l<=iii;++l)
            a[l][j]=a[l][jjj]=k;
        for(int c=j;c<=jjj;++c)
            a[i][c]=a[iii][c]=k;
        --k;
    }
    for(int l=i;l<=ii;++l)
        for(int c=j;c<=jj;++c)
        {
            if(a[l][c]==0)
            {
                a[l][c]=a[l][c+1]=a[l+1][c]=a[l+1][c+1]=k;
                --k;
            }
        }
    return true;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>test;
    while(test--)
    {
        cin>>n>>m>>k;
        a.clear();
        a.resize(n+5);
        for(int i=1;i<=n;++i)
            a[i].resize(m+5);
        if(n%2==1||m%2==1||k==n*m/4-1||n==m&&k==n/2+1||k>n*m/4||k<max(n/2,m/2))
        {
            cout<<"NO\n";
            continue;
        }
        completeaza(1,1,n,m,k);
        cout<<"YES\n";
        for(int i=1;i<=n;++i)
        {
            for(int j=1;j<=m;++j)
            {
                cout<<a[i][j]<<' ';
                a[i][j]=0;
            }
            cout<<'\n';
        }
    }
    return 0;
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:70:44: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   70 |         if(n%2==1||m%2==1||k==n*m/4-1||n==m&&k==n/2+1||k>n*m/4||k<max(n/2,m/2))
      |                                        ~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 856 KB Correct! Azusa and Laika like the garden :)
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 856 KB Correct! Azusa and Laika like the garden :)
2 Correct 8 ms 604 KB Correct! Azusa and Laika like the garden :)
3 Correct 10 ms 604 KB Correct! Azusa and Laika like the garden :)
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 856 KB Correct! Azusa and Laika like the garden :)
2 Correct 8 ms 604 KB Correct! Azusa and Laika like the garden :)
3 Correct 10 ms 604 KB Correct! Azusa and Laika like the garden :)
4 Execution timed out 725 ms 432 KB Time limit exceeded
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 747 ms 348 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1025 ms 440 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 856 KB Correct! Azusa and Laika like the garden :)
2 Correct 8 ms 604 KB Correct! Azusa and Laika like the garden :)
3 Correct 10 ms 604 KB Correct! Azusa and Laika like the garden :)
4 Execution timed out 725 ms 432 KB Time limit exceeded
5 Halted 0 ms 0 KB -