結果

問題 No.707 書道
ユーザー autumn_314autumn_314
提出日時 2018-07-02 20:11:32
言語 C
(gcc 10.1.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 917 Byte
コンパイル時間 126 ms
使用メモリ 984 KB
最終ジャッジ日時 2020-06-21 10:43:02

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
testcase_00 AC 1 ms
984 KB
testcase_01 AC 0 ms
984 KB
testcase_02 AC 1 ms
944 KB
testcase_03 AC 1 ms
984 KB
testcase_04 AC 1 ms
984 KB
testcase_05 AC 1 ms
984 KB
testcase_06 AC 2 ms
940 KB
testcase_07 AC 1 ms
984 KB
testcase_08 AC 0 ms
976 KB
権限があれば一括ダウンロードができます

ソースコード

diff #
#include <stdio.h>
#include <math.h>

int main(void){
	int h,w;
	scanf("%d%d", &h, &w);
	getchar();
	int map[55][55];
	for(int i=1; i<=h; i++){
		for(int j=1; j<=w+1; j++){
			map[i][j]=getchar();
		}
	}
	double sum=0,rsum=0,min=1000000;
	for(int k=1; k<=h; k++){
		sum=0;
		rsum=0;
		for(int i=1; i<=h; i++){
			for(int j=1; j<=w; j++){
				if(map[i][j]=='1'){
						sum += sqrt((double)(k-i)*(k-i) + (double)(j-0)*(j-0));
						rsum += sqrt((double)(k-i)*(k-i) + (double)(j-w-1)*(j-w-1));
				}
			}
		}
		if(min > sum)min=sum;
		if(min > rsum)min=rsum;
	}

	for(int k=1; k<=w; k++){
		sum=0;
		rsum=0;
		for(int i=1; i<=h; i++){
			for(int j=1; j<=w; j++){
				if(map[i][j]=='1'){
						sum += sqrt((double)(i-0)*(i-0) + (double)(j-k)*(j-k));
						rsum += sqrt((double)(i-h-1)*(i-h-1) + (double)(j-k)*(j-k));
				}
			}
		}
		if(min > sum)min=sum;
		if(min > rsum)min=rsum;
	}

	printf("%.8f\n",min);
	return 0;
}
0