結果

問題 No.179 塗り分け
コンテスト
ユーザー abinull
提出日時 2026-01-04 22:50:54
言語 C++17
(gcc 15.2.0 + boost 1.89.0)
結果
WA  
実行時間 -
コード長 1,444 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 978 ms
コンパイル使用メモリ 102,112 KB
実行使用メモリ 7,852 KB
最終ジャッジ日時 2026-01-04 22:50:58
合計ジャッジ時間 3,302 ms
ジャッジサーバーID
(参考情報)
judge2 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 6
other AC * 38 WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>
#include <vector>
#include <string>

using namespace std;

bool verifier(vector<string> f, pair<int,int> direction, int width, int height, int blacks) {
    int painted = 0;
    auto field = f;
    
          for(int i=0;i<height;i++){
              for(int j=0;j<width;j++){

                  if (field[i][j]!='#') continue;

                  field[i][j] = 'R';

                  int X =j + direction.second;
                  int Y =i + direction.first;

                  if (Y>=height || X<0 || X>=width || field[Y][X]!='#') {return false;}
                  else {field[Y][X] = 'B'; painted += 2;}

                }
           }
    return blacks==painted;    
}

int main() {
    int w,h;
    cin >> h >> w;

    string s;
    vector<string> m;

    for(int i=0;i<h;i++) {
        cin >> s;
        m.push_back(s);
    }

    int b = 0;
    for(int i=0;i<h;i++){
       for(int j=0;j<w;j++){
          if (m[i][j]=='#') b++; 
        }
    }

    vector<pair<int, int>> dirs;
    pair<int,int> p;

    int d2, d1 = 0;
    for(d2=0;d2<w;d2++) {
        p.first = d1; p.second = d2;
        dirs.push_back(p);
    }

    for(d1=1;d1<h;d1++){
        for(d2=-w+1;d2<w;d2++){
            p.first = d1; p.second = d2;
            dirs.push_back(p);
        }
    }
    
    for(auto dr : dirs) {
    	if (verifier(m, dr, w, h, b)) {cout << "YES" << endl; return 0;}
    }
    cout << "NO" << endl;
    
    return 0;
}
0