답안 #490939

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
490939 2021-11-29T22:35:19 Z rainboy Segway (COI19_segway) C
40 / 100
1000 ms 836 KB
#include <stdio.h>
#include <string.h>

#define N	20000
#define X	300
#define INF	0x3f3f3f3f

int min(int a, int b) { return a < b ? a : b; }

int main() {
	static int ss[N][3], xx[N], yy[N], tt[N], kk[X + 1];
	static char accel[X + 1];
	int n, m, h, i, x;

	scanf("%d", &n);
	for (i = 0; i < n; i++)
		for (h = 0; h < 3; h++)
			scanf("%d", &ss[i][h]);
	scanf("%d", &m);
	for (h = 0; h < m; h++) {
		scanf("%d", &x);
		accel[x] = 1;
	}
	for (i = 0; i < n; i++)
		tt[i] = ss[i][0];
	while (1) {
		int t;

		t = INF;
		for (i = 0; i < n; i++)
			if (xx[i] != X)
				t = min(t, tt[i]);
		if (t == INF)
			break;
		for (i = 0; i < n; i++)
			if (xx[i] != X && tt[i] == t) {
				xx[i]++;
				if (xx[i] < X && accel[xx[i]] && yy[i] <= xx[i]) {
					yy[i] = -1;
				}
			}
		memset(kk, 0, (X + 1) * sizeof *kk);
		for (i = 0; i < n; i++)
			if (tt[i] == t)
				kk[xx[i] - 1]++;
			else
				kk[xx[i]]++;
		for (x = X - 1; x >= 0; x--)
			kk[x] += kk[x + 1];
		for (i = 0; i < n; i++)
			if (yy[i] == -1)
				yy[i] = xx[i] + kk[xx[i]] % 20;
		for (i = 0; i < n; i++)
			if (xx[i] != X && tt[i] == t)
				tt[i] = yy[i] <= xx[i] ? t + ss[i][xx[i] / (X / 3)] : t + 1;
	}
	for (i = 0; i < n; i++)
		printf("%d\n", tt[i]);
	return 0;
}

Compilation message

segway.c: In function 'main':
segway.c:15:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
segway.c:18:4: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   18 |    scanf("%d", &ss[i][h]);
      |    ^~~~~~~~~~~~~~~~~~~~~~
segway.c:19:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |  scanf("%d", &m);
      |  ^~~~~~~~~~~~~~~
segway.c:21:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |   scanf("%d", &x);
      |   ^~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 17 ms 204 KB Output is correct
3 Correct 67 ms 316 KB Output is correct
4 Correct 243 ms 376 KB Output is correct
5 Execution timed out 1091 ms 836 KB Time limit exceeded
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 3 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 5 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 7 ms 304 KB Output is correct
8 Correct 10 ms 280 KB Output is correct
9 Correct 11 ms 332 KB Output is correct
10 Correct 21 ms 332 KB Output is correct
11 Correct 5 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 17 ms 204 KB Output is correct
3 Correct 67 ms 316 KB Output is correct
4 Correct 243 ms 376 KB Output is correct
5 Execution timed out 1091 ms 836 KB Time limit exceeded