제출 #745320

#제출 시각아이디문제언어결과실행 시간메모리
745320rainboyExam (eJOI20_exam)C11
77 / 100
110 ms98320 KiB
#include <stdio.h>

#define N	100000
#define N_	5000

int max(int a, int b) { return a > b ? a : b; }

int main() {
	static int aa[N], bb[N], qu[N], pp[N], qq[N], dp[N_][N_];
	int n, cnt, same, i, j, b, k, good;

	scanf("%d", &n);
	for (i = 0; i < n; i++)
		scanf("%d", &aa[i]);
	for (i = 0; i < n; i++)
		scanf("%d", &bb[i]);
	same = 1;
	for (i = 1; i < n; i++)
		if (bb[i] != bb[i - 1]) {
			same = 0;
			break;
		}
	if (same) {
		b = bb[0], k = 0;
		for (i = 0; i < n; i++)
			if (aa[i] <= b) {
				j = i;
				good = 0;
				while (j < n && aa[j] <= b)
					if (aa[j++] == b)
						good = 1;
				if (good)
					k += j - i;
				i = j;
			}
		printf("%d\n", k);
		return 0;
	}
	cnt = 0;
	for (i = 0; i < n; i++) {
		while (cnt && aa[qu[cnt - 1]] <= aa[i])
			cnt--;
		pp[i] = cnt ? qu[cnt - 1] : -1;
		qu[cnt++] = i;
	}
	cnt = 0;
	for (i = n - 1; i >= 0; i--) {
		while (cnt && aa[qu[cnt - 1]] <= aa[i])
			cnt--;
		qq[i] = cnt ? qu[cnt - 1] : n;
		qu[cnt++] = i;
	}
	if (n <= N_) {
		for (i = 0; i < n; i++)
			for (j = 0; j < n; j++)
				dp[i][j] = max(i == 0 ? 0 : dp[i - 1][j], (j == 0 ? 0 : dp[i][j - 1]) + (aa[i] == bb[j] && pp[i] < j && j < qq[i] ? 1 : 0));
		printf("%d\n", dp[n - 1][n - 1]);
	}
	return 0;
}

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

exam.c: In function 'main':
exam.c:12:2: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   12 |  scanf("%d", &n);
      |  ^~~~~~~~~~~~~~~
exam.c:14:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   14 |   scanf("%d", &aa[i]);
      |   ^~~~~~~~~~~~~~~~~~~
exam.c:16:3: warning: ignoring return value of 'scanf' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |   scanf("%d", &bb[i]);
      |   ^~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...