Submission #3601560


Source Code Expand

#include <limits.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

// 内部定数
#define D_MARK_MAX		1000									// 最大マーク数

// 内部構造体 - マーク情報
typedef struct Mark {
	int miRow, miCol;											// 行・列
} Mark;

// 内部変数
static FILE *szpFpI;											// 入力
static int siH, siW;											// 高さ・幅
static Mark sz1Mark[D_MARK_MAX];								// マーク
static int siMCnt;												// マーク数
static long long slCnt;											// 本数

// 内部変数 - テスト用
#ifdef D_TEST
	static int siRes;
	static FILE *szpFpA;
#endif

// 本数 - 減算
int
fDelCnt(
	int piRow					// <I> 行
	, int piCol					// <I> 列
)
{
	int i;

	// 範囲チェック
	if (piRow < 1 || siH < piRow) {
		return 0;
	}
	if (piCol < 1 || siW < piCol) {
		return 0;
	}

	// マーク - 検索
	for (i = 0; i < siMCnt; i++) {
		if (sz1Mark[i].miRow == piRow) {
			if (sz1Mark[i].miCol == piCol) {
				return 0;
			}
		}
	}

	// 本数 - 減算
	slCnt--;

	return 0;
}

// 実行メイン
int
fMain(
	int piTNo					// <I> テスト番号 1~
)
{
	int i;
	char lc1Buf[1024], lc1Out[1024];

	// データ - 初期化
	siMCnt = 0;													// マーク数

	// 入力 - セット
#ifdef D_TEST
	sprintf(lc1Buf, ".\\Test\\T%d.txt", piTNo);
	szpFpI = fopen(lc1Buf, "r");
	sprintf(lc1Buf, ".\\Test\\A%d.txt", piTNo);
	szpFpA = fopen(lc1Buf, "r");
	siRes = 0;
#else
	szpFpI = stdin;
#endif

	// 高さ・幅・マーク数 - 取得
	int liMark;
	fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
	sscanf(lc1Buf, "%d%d%d", &siH, &siW, &liMark);

	// 最大本数
	slCnt = (long long)(siH - 1) * (long long)siW + (long long)(siW - 1) * (long long)siH;

	// マーク - 取得
	for (i = 0; i < liMark; i++) {
		fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
		sscanf(lc1Buf, "%d%d", &sz1Mark[siMCnt].miRow, &sz1Mark[siMCnt].miCol);

		// 上下左右を削除
		fDelCnt(sz1Mark[siMCnt].miRow + 1, sz1Mark[siMCnt].miCol);
		fDelCnt(sz1Mark[siMCnt].miRow - 1, sz1Mark[siMCnt].miCol);
		fDelCnt(sz1Mark[siMCnt].miRow, sz1Mark[siMCnt].miCol + 1);
		fDelCnt(sz1Mark[siMCnt].miRow, sz1Mark[siMCnt].miCol - 1);

		// マーク数
		siMCnt++;
	}

	// 結果 - セット
	sprintf(lc1Out, "%lld\n", slCnt);

	// 結果 - 表示
#ifdef D_TEST
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, lc1Out)) {
		siRes = -1;
	}
#else
	printf("%s", lc1Out);
#endif

	// 残データ有無
#ifdef D_TEST
	lc1Buf[0] = '\0';
	fgets(lc1Buf, sizeof(lc1Buf), szpFpA);
	if (strcmp(lc1Buf, "")) {
		siRes = -1;
	}
#endif

	// テストファイルクローズ
#ifdef D_TEST
	fclose(szpFpI);
	fclose(szpFpA);
#endif

	// テスト結果
#ifdef D_TEST
	if (siRes == 0) {
		printf("OK %d\n", piTNo);
	}
	else {
		printf("NG %d\n", piTNo);
	}
#endif

	return 0;
}

int
main()
{

#ifdef D_TEST
	int i;
	for (i = D_TEST_SNO; i <= D_TEST_ENO; i++) {
		fMain(i);
	}
#else
	fMain(0);
#endif

	return 0;
}

Submission Info

Submission Time
Task B - 格子グラフ
User asugen0402
Language C (GCC 5.4.1)
Score 300
Code Size 3105 Byte
Status AC
Exec Time 2 ms
Memory 128 KB

Compile Error

./Main.c: In function ‘fMain’:
./Main.c:86:2: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
  fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
  ^
./Main.c:94:3: warning: ignoring return value of ‘fgets’, declared with attribute warn_unused_result [-Wunused-result]
   fgets(lc1Buf, sizeof(lc1Buf), szpFpI);
   ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status
AC × 3
AC × 31
Set Name Test Cases
Sample 00_sample_00, 00_sample_01, 00_sample_02
All 00_sample_00, 00_sample_01, 00_sample_02, in01, in02, in03, in04, in05, in06, in07, in08, in09, in10, in11, in12, in13, in14, in15, in16, in17, in18, in19, in20, in21, in22, in23, in24, in25, in26, in27, in28
Case Name Status Exec Time Memory
00_sample_00 AC 1 ms 128 KB
00_sample_01 AC 1 ms 128 KB
00_sample_02 AC 1 ms 128 KB
in01 AC 1 ms 128 KB
in02 AC 1 ms 128 KB
in03 AC 1 ms 128 KB
in04 AC 1 ms 128 KB
in05 AC 1 ms 128 KB
in06 AC 1 ms 128 KB
in07 AC 1 ms 128 KB
in08 AC 1 ms 128 KB
in09 AC 1 ms 128 KB
in10 AC 1 ms 128 KB
in11 AC 1 ms 128 KB
in12 AC 1 ms 128 KB
in13 AC 1 ms 128 KB
in14 AC 1 ms 128 KB
in15 AC 1 ms 128 KB
in16 AC 1 ms 128 KB
in17 AC 1 ms 128 KB
in18 AC 1 ms 128 KB
in19 AC 1 ms 128 KB
in20 AC 1 ms 128 KB
in21 AC 1 ms 128 KB
in22 AC 2 ms 128 KB
in23 AC 2 ms 128 KB
in24 AC 1 ms 128 KB
in25 AC 2 ms 128 KB
in26 AC 1 ms 128 KB
in27 AC 1 ms 128 KB
in28 AC 1 ms 128 KB