結果

問題 No.3710 Universal Tiles
コンテスト
ユーザー UT0911
提出日時 2026-07-20 18:51:20
言語 C++17
(gcc 15.3.0 + boost 1.92.0 + ACL)
コンパイル:
g++-15 -O2 -lm -std=c++17 -Wuninitialized -DONLINE_JUDGE -o a.out _filename_
実行:
./a.out
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,522 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 502 ms
コンパイル使用メモリ 95,992 KB
実行使用メモリ 6,528 KB
最終ジャッジ日時 2026-09-11 20:50:32
合計ジャッジ時間 2,236 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 29 WA * 3
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int N,M;
int ans=1000;

vector<vector<string>> S(10,vector<string> (10,string (10,'.')));

void rec(int l,int dir,vector<string> T){
  if(l<=N){
    if(l>0){
       if(dir==0){
         for(int j=0;j<M;j++){
           for(int k=0;k<M;k++){
             if(S[l-1][j][k]=='#'){
               T[j][k]='#';
             }
           }
         }
      }else if(dir==1){
        for(int j=0;j<M;j++){
          for(int k=0;k<M;k++){
            if(S[l-1][M-1-k][j]=='#'){
              T[j][k]='#';
            }
          }
        }
      }else if(dir==2){
        for(int j=0;j<M;j++){
          for(int k=0;k<M;k++){
            if(S[l-1][M-1-j][M-1-k]=='#'){
              T[j][k]='#';
            }
          }
        }
      }else if(dir==3){
        for(int j=0;j<M;j++){
          for(int k=0;k<M;k++){
            if(S[l-1][M-1-k][j]=='#'){
              T[j][k]='#';
            }
          }
        }
      }
    }
    if(l<N){
      for(int i=0;i<4;i++){
        rec(l+1,i,T);
      }
    }else if(l==N){
      int count=0;
      for(int i=0;i<M;i++){
        for(int j=0;j<M;j++){
          if(T[i][j]=='#'){
            count++;
          }
        }
      }
      if(ans>count){
        ans=count;
      }
    }
  }
}

int main()
{
  cin >> N >> M;
  for(int i=0;i<N;i++){
    for(int j=0;j<M;j++){
      cin >> S[i][j];
    }
  }
  
  vector<string> T(M,string (M,'.'));
  rec(0,0,T);
  
  cout << ans << "\n";
  
  return 0;
}
0