U E D R , A S I H C RSS

1thPCinCAUCSE/ProblemA/Solution/zennith

~cpp 
#include <stdio.h>

int solve(int *);
int evalMeets(int);
int accumCount(int);

double meetPins[11] = {0, 5.5 + 1 * 60, 10.5 + 2 * 60, 16.5 + 3 * 60,
	21.5 + 4 * 60, 27.5 + 5 * 60, 32.5 + 6 * 60,
	38.5 + 7 * 60, 43.5 + 8 * 60, 49.5 + 9 * 60, 54.5 + 10 * 60};

int main(void) {
	int num, input[4], i, j, output[10] = {0, };

	scanf("%d", &num);

	i = 0, j = num;
	while (j--) {

		scanf("%d%d%d%d", &input[0], &input[1], &input[2], &input[3]);

		output[i] = solve(input);
		i++;
	}

	i = 0;
	while (num--)
		printf("%d\n", output[i++]);

	return 0;
}

int solve(int * arg) {
	int startTime, endTime, ret = 0;

	if (arg[0] == 12)
		arg[0] = 0;
	if (arg[2] == 12)
		arg[2] = 0;

	startTime = arg[0] * 60 + arg[1];
	endTime = arg[2] * 60 + arg[3];

	if (evalMeets(startTime))
		ret++;

	while ( startTime = (++startTime % 720), startTime != endTime )
		if (evalMeets(startTime))
			ret++;

	return ret;
}

int evalMeets(int curTime) {
	int prev, present;

	if (!curTime)
		return 1;

	prev = accumCount(curTime);
	present = accumCount(++curTime);

	if (prev != present)
		return 1;
	return 0;
}

int accumCount(int time) {
	int i, ret;

	for (i = 0, ret = 0; i < 11; i++)
		if (time < meetPins[i])
			ret++;
		else
			ret--;

	return ret;
}


대회ė—ė„œ 한 ė†ŒėŠ¤ëŠ” ė•„니ęŗ ėš”, 밊금 ė§  ė†ŒėŠ¤ ėž…니다. 메ė¸ė•„ė´ë””ė–´ëŠ” 대회ė‹œ ėƒę°í–ˆë˜ 것ęŗŧ 같ėŠĩ니다만, 대회때는 ė‹œėš¨ė´ ė›€ė§ė´ëŠ” 것ė„ ėƒę°í•˜ė§€ ëĒģ해ė„œ ė‹¤íŒ¨í–ˆė—ˆęĩ°ėš”.
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:22:08
Processing time 0.0151 sec