結果

問題 No.3657 Gathering Stones
コンテスト
ユーザー nekoti
提出日時 2026-08-30 14:20:31
言語 C
(gcc 15.3.0)
コンパイル:
gcc-15 -O2 -DONLINE_JUDGE -o a.out _filename_ -lm
実行:
./a.out
結果
AC  
実行時間 0 ms / 2,000 ms
+ 818µs
コード長 1,517 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,582 ms
コンパイル使用メモリ 39,668 KB
実行使用メモリ 6,272 KB
最終ジャッジ日時 2026-08-30 14:20:36
合計ジャッジ時間 3,043 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 57
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

#define _DEBUG 0

#include<stdio.h>
#include<stdbool.h>
#include<string.h>
#include<stdlib.h>
int main(void)
{
  int scan;//scanf警告用
  int ans=0;
  int i, j;
  
  int n,m;scan=scanf("%d%d",&n,&m);
  char hw[111][111];
  for(i=0; i<n; i++)
  {
    scan=scanf("%s",hw[i]);
  }
  
  int tatecount[111]={0};//縦(j列)の#個数
  for(j=0; j<m; j++)
  {
    for(i=0; i<n; i++)
    {
      if(hw[i][j]=='#')tatecount[j]++;
    }
  }
  
  //■
  char hw2[111][111]={0};
  //【縦のやつをまず上側につめる。】
  for(i=0; i<m; i++)
  {
#if _DEBUG
    printf("i=%d : %d 個\n",i,tatecount[i]);
#endif
    
    for(j=0;j<tatecount[i];j++)hw2[j][i]='#';
    for(;   j<n;           j++)hw2[j][i]='.';
  }
#if _DEBUG
  for(i=0; i<n; i++)
  {
    printf("%s\n",&hw2[i]);
  }
#endif
  
  //【次は横を】
  int yokocount[111]={0};//横(i行)の#個数
  for(i=0; i<n; i++)
  {
    for(j=0; j<m; j++)
    {
      if(hw2[i][j]=='#')yokocount[i]++;
    }
  }
  
#if _DEBUG
  printf("%d %d %d %d \n",yokocount[0],yokocount[1],yokocount[2],yokocount[3]);
  printf("%d %d %d %d \n",tatecount[0],tatecount[1],tatecount[2],tatecount[3]);
  puts("");
#endif
  
  //【次は横のやつを左側につめる。】
  char hw3[111][111]={0};
  for(i=0; i<n; i++)
  {
#if _DEBUG
    printf("i=%d : %d 個\n",i,yokocount[i]);
#endif
    
    for(j=0;j<yokocount[i];j++)hw3[i][j]='#';
    for(;   j<m;           j++)hw3[i][j]='.';
  }
  for(i=0; i<n; i++)
  {
    printf("%s\n",&hw3[i]);
  }
  return scan-scan;
}
0