#include <stdio.h>


int main()
{
	int p[3004] = { 0 };
	int n, m, a, b, c = 0;
	scanf("%d", &n);
	for (int i = 0; i < n; i++) scanf("%d", &p[i]);
	scanf("%d %d", &a, &b);

	// a번쨰 수부터 b번쨰 수까지의 합 저장
	for (int i = a - 1; i < b; i++) c += p[i];

	// count에 연속 부분 수열 개수를 저장
	int count = 0;

	// i: 연속 부분 수열의 시작 위치
	for (int i = 0; i < n; i++)
	{
		// ans 변수에 값을 누적하여 출력 여부를 결정한다.
		int ans = 0;

		// j: 연속 부분 수열의 끝 위치
		for (int j = i; j < n; j++)
		{
			// ans에 값을 누적한다.
			ans += p[j];

			// 연속 부분 수열 a[i..j]의 합이 n과 같음
			if (ans == c)
			{
				// 연속 부분 수열의 개수 저장
				count++;

				// C1에서는 양수만 봐서 break를 하면 되지만
				// C2에서는 음수까지 봐서 뒤에 값들에 정답이 있을 수 있으므로
				// break를 안해준다.
                // 예시 입력: p = { 0, 1, -1 }, a = 1, b = 1 일 때
                // break를 안하면 정답 3이 나오지만
                // break를 추가하면 오답 2가 나온다.
			}
		}
	}
	// 정답 출력
	printf("%d", count);
}

'SFPC > 2021' 카테고리의 다른 글

2021 SFPC E1  (0) 2023.02.14
2021 SFPC D0  (0) 2023.02.11
2021 SFPC D1  (0) 2023.02.11
2021 SFPC C1  (0) 2023.02.10
2021 SFPC C0  (0) 2023.02.10
2021 SFPC B0  (0) 2023.02.09

+ Recent posts