Thứ Bảy, 4 tháng 12, 2021

CHEVUON C++


#include<bits/stdc++.h>
using namespace std;

int n ,m ,x ,a[1005][1005] ,d[1005][1005][5];
vector<int> so;
vector<int> kq;

bool kt( int a ,int i ,int j )
{
    for( int t = j ; t <= j+1 ;t++ )
    {
        for( int p = i ; p <= i+1 ;p++ )
        {
            int x = p-2*(p>n), y = t-2*(t>m);
            for( int q = 1 ; q <= d[x][y][0] ;q++ )
            {
                if( d[x][y][q] == a ) return 1;
            }
        }
    }
    return 0;
}

main()
{
 //   freopen("CHEVUON.inp" ,"r" ,stdin);
  //  freopen("CHEVUON.out" ,"w" ,stdout);
    cin >> n >> m;
    for( int i = 1 ; i <= n ;i++)
    {
        for( int j = 1 ; j <= m ;j++ )
        {
            cin >> x;
            so.push_back(x);
        }
    }
    sort(so.begin() ,so.end() ,greater<int>());
    int dem = 0;
    for( int j = 1 ; j <= m ; j+=2)
    {
        int te = 1;
        for( int i = 1 ; i <= n ; i+=2 ,te++ )
        {
            int ma = 0;
            for( int t = j ; t <= j+1 ;t++ )
            {
                for( int p = i ; p <= i+1 ;p++ )
                {
                    if( p > n || t > m )
                    {
                        ma = max( ma ,a[p-2*(p>n)][t-2*(t>m)] );
                        continue;
                    }
                    a[p][t] = so[dem];
                    ma = max( ma ,so[dem] );
                    dem++;
                }
            }
            ma++;
            while( kt( ma ,i ,j ) ) ma++;
            kq.push_back(ma);
            for( int t = j ; t <= j+1 ;t++ )
            {
                for( int p = i ; p <= i+1 ;p++ )
                {
                    int x = p-2*(p>n), y = t-2*(t>m) ,sl = ++d[x][y][0];
                    d[x][y][sl] = ma;
                }
            }
        }
    }

    for( int i = 1 ; i <= n ; i++ )
    {
        for( int j = 1 ; j <= m ; j++)
        {
            cout<<a[i][j]<<' ';
        }
        cout<<'\n';
    }
    cout<<kq.size()<<'\n';
    for( int i : kq)
    {
        cout<<i<<'\n';
    }
}


Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.