Submission #1298992

#TimeUsernameProblemLanguageResultExecution timeMemory
1298992NotLinuxGardening (RMI21_gardening)C++20
100 / 100
68 ms2580 KiB
#include <bits/stdc++.h> using namespace std; #define sz(x) (int)x.size() #define all(x) x.begin() , x.end() void solve(){ int n,m,k; cin >> n >> m >> k; if(n%2 or m%2 or n*m < 4*k or k < max(n,m) / 2){ cout << "NO" << endl; return; } vector<vector<int>>grid(n,vector<int>(m,-1)); vector<pair<int,int>>rectangle; // kac tane kaplama olcak int kap = 0 , curk = n*m/4; for(int i = 1;i<=min(n,m)/2;i++){ int hi = (n-2*i) * (m-2*i) / 4 + i; if(k > hi){ kap = i-1; break; } else{ rectangle.push_back({n-2*(i-1) , m-2*(i-1)}); curk = hi; } } int sayac = 1; // fuck this case if(k == curk-1){ if(kap == 0){ cout << "NO" << endl; return; } else{ rectangle.pop_back(); kap--; curk = (n-2*kap) * (m-2*kap) / 4 + kap; if(n-2*kap >= 6 and m-2*kap >= 8){ // cout << "FLAG 1" << endl; rectangle.push_back({n-2*kap,m-2*kap - 4}); for(int x = kap;x<=kap+5;x++){ grid[x][m-kap-4] = sayac; grid[x][m-kap-1] = sayac; } for(int y = m-kap-4;y<=m-kap-1;y++){ grid[kap][y] = sayac; grid[kap+5][y] = sayac; } sayac++; } else if(n-2*kap >= 8 and m-2*kap >= 6){ // cout << "FLAG 2" << endl; rectangle.push_back({n-2*kap - 4,m-2*kap}); for(int y = kap;y<=kap+5;y++){ grid[n-kap-4][y] = sayac; grid[n-kap-1][y] = sayac; } for(int x = n-kap-4;x<=n-kap-1;x++){ grid[x][kap] = sayac; grid[x][kap+5] = sayac; } sayac++; } else{ cout << "NO" << endl; return; } } } else{ if(k != curk){ int x=4,y=4; curk -= 2; for(int xi = 6;xi <= n-2*kap;xi+=2){ if(k == curk)break; else{ x = xi; curk--; } } // rectangle y boyu ne olacak for(int yi = 6;yi <= m-2*kap;yi+=2){ if(k == curk)break; else{ y = yi; curk--; } } rectangle.push_back({x,y}); } } // rectanglelari koy for(int ind = 0;ind<sz(rectangle);ind++){ auto r = rectangle[ind]; for(int x = ind;x < ind + r.first;x++){ grid[x][ind] = sayac; grid[x][ind + r.second - 1] = sayac; } for(int y = ind;y < ind + r.second;y++){ grid[ind][y] = sayac; grid[ind + r.first - 1][y] = sayac; } sayac++; } // bosluk doldur for(int i = 0;i<n-1;i++){ for(int j = 0;j<m-1;j++){ if(grid[i][j] == -1 and grid[i+1][j] == -1 and grid[i][j+1] == -1 and grid[i+1][j+1] == -1){ grid[i][j] = grid[i+1][j] = grid[i][j+1] = grid[i+1][j+1] = sayac; sayac++; } } } // yazdir cout << "YES" << endl; for(int i = 0;i<n;i++){ for(int j = 0;j<m;j++){ cout << grid[i][j] << " "; } cout << endl; } } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0); int testcase=1;cin >> testcase; while(testcase--)solve(); cerr << 1000.0 * clock() / CLOCKS_PER_SEC << " ms" << endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...