結果
問題 | No.179 塗り分け |
ユーザー |
![]() |
提出日時 | 2015-05-21 23:00:38 |
言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 4 ms / 3,000 ms |
コード長 | 1,657 bytes |
コンパイル時間 | 545 ms |
コンパイル使用メモリ | 66,548 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-07-23 14:29:29 |
合計ジャッジ時間 | 1,702 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:89:9: warning: ‘check’ may be used uninitialized in this function [-Wmaybe-uninitialized] 89 | if(check){ | ^~
ソースコード
#include <iostream> #include <algorithm> #include <functional> #include <string> #include <limits.h> #include <vector> #include <numeric> using namespace std; int main(){ int h,w; string in; int data[50][50]; int data2[50][50]; int lowy = 999; int lowx = 999; int highy = -1; int highx = -1; int ysize,xsize; bool check; cin >> h >> w; for(int iy=0; iy<h; iy++){ cin >> in; for(int ix=0; ix<w; ix++){ if(in[ix] == '#'){ data[iy][ix] = 1; if(iy < lowy){ lowy = iy; } if(ix < lowx){ lowx = ix; } if(iy > highy){ highy = iy; } if(ix > highx){ highx = ix; } }else{ data[iy][ix] = 0; } } } if(lowy == 999){ cout << "NO" << endl; return 0; } ysize = highy - lowy; xsize = highx - lowx; for(int ysizei=0; ysizei<=ysize; ysizei++){ for(int xsizei=-xsize; xsizei<=xsize; xsizei++){ //初期化 for(int iy=0; iy<h; iy++){ for(int ix=0; ix<w; ix++){ data2[iy][ix] = data[iy][ix]; } } check = false; if(ysizei != 0 || xsizei != 0){ for(int iy=0; iy<h; iy++){ for(int ix=0; ix<w; ix++){ if(data2[iy][ix] == 1){ check = true; data2[iy][ix] = 0; if(iy+ysizei >= h || ix+xsizei < 0 || ix+xsizei >= w || data2[iy+ysizei][ix+xsizei] == 0){ check = false; iy = h; break; }else{ data2[iy+ysizei][ix+xsizei] = 0; } } } } //cout << ysizei << "," << xsizei << " " << check << endl; if(check){ ysizei = ysize; break; } } } } if(check){ cout << "YES" << endl; }else{ cout << "NO" << endl; } return 0; }