제출 #673434

#제출 시각아이디문제언어결과실행 시간메모리
673434rainboyNaan (JOI19_naan)C11
100 / 100
544 ms100736 KiB
#include <stdio.h>

#define N	2000
#define M	2000

int main() {
	static int ww[N][M + 1], ii[N];
	static long long pp[N][N + 1], qq[N][N + 1];
	int n, m, g, g_, g1, i, i_, i1, j, d, tmp;

	scanf("%d%d", &n, &m);
	for (i = 0; i < n; i++)
		for (j = 1; j <= m; j++) {
			scanf("%d", &ww[i][j]);
			ww[i][j] += ww[i][j - 1];
		}
	for (i = 0; i < n; i++) {
		pp[0][0] = 0, qq[0][0] = 1, pp[0][n] = m, qq[0][n] = 1;
		for (g = 1, j = 0; g < n; g++) {
			while (j < m && (long long) ww[i][j + 1] * n < (long long) ww[i][m] * g)
				j++;
			d = ww[i][j + 1] - ww[i][j];
			pp[i][g] = (long long) j * n * d + (long long) ww[i][m] * g - (long long) ww[i][j] * n, qq[i][g] = n * d;
		}
	}
	for (i = 0; i < n; i++)
		ii[i] = i;
	for (g = 0; g + 1 < n; g++) {
		g1 = g;
		for (g_ = g + 1; g_ < n; g_++) {
			i1 = ii[g1], i_ = ii[g_];
			if (pp[i1][g + 1] / qq[i1][g + 1] > pp[i_][g + 1] / qq[i_][g + 1] || pp[i1][g + 1] / qq[i1][g + 1] == pp[i_][g + 1] / qq[i_][g + 1] && pp[i1][g + 1] % qq[i1][g + 1] * qq[i_][g + 1] > pp[i_][g + 1] % qq[i_][g + 1] * qq[i1][g + 1])
				g1 = g_;
		}
		tmp = ii[g], ii[g] = ii[g1], ii[g1] = tmp;
	}
	for (g = 0; g + 1 < n; g++)
		printf("%lld %lld\n", pp[ii[g]][g + 1], qq[ii[g]][g + 1]);
	for (g = 0; g < n; g++)
		printf("%d ", ii[g] + 1);
	printf("\n");
	return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

naan.c: In function 'main':
naan.c:32:136: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
   32 |    if (pp[i1][g + 1] / qq[i1][g + 1] > pp[i_][g + 1] / qq[i_][g + 1] || pp[i1][g + 1] / qq[i1][g + 1] == pp[i_][g + 1] / qq[i_][g + 1] && pp[i1][g + 1] % qq[i1][g + 1] * qq[i_][g + 1] > pp[i_][g + 1] % qq[i_][g + 1] * qq[i1][g + 1])
      |                                                                         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
naan.c:11:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   11 |  scanf("%d%d", &n, &m);
      |  ^~~~~~~~~~~~~~~~~~~~~
naan.c:14:4: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |    scanf("%d", &ww[i][j]);
      |    ^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...