CF1141F1 Same Sum Blocks (Easy)

题目描述

本题有两个版本,区别仅在于 $n$ 的取值范围。 给定一个整数数组 $a[1], a[2], \dots, a[n]$。一个“块”是指一段连续的元素 $a[l], a[l+1], \dots, a[r]$($1 \le l \le r \le n$)。因此,一个块由一对下标 $(l, r)$ 唯一确定。 请你找出若干个块 $(l_1, r_1), (l_2, r_2), \dots, (l_k, r_k)$,使得: - 这些块互不相交(即两两不重叠)。形式化地说,对于任意两个块 $(l_i, r_i)$ 和 $(l_j, r_j)$,若 $i \neq j$,则要么 $r_i < l_j$,要么 $r_j < l_i$。 - 每个块内所有元素的和都相等。形式化地说, $$a[l_{1}] + a[l_{1} + 1] + \dots + a[r_{1}] = a[l_{2}] + a[l_{2} + 1] + \dots + a[r_{2}] = \dots = a[l_{k}] + a[l_{k} + 1] + \dots + a[r_{k}]$$ - 块的数量 $k$ 尽可能大。形式化地说,不存在另一组满足上述两个条件的块 $(l_1', r_1'), (l_2', r_2'), \dots, (l_{k'}', r_{k'}')$,使得 $k' > k$。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1141F2/a32038d691a8fef036434bed64856f1bff592dde.png) 上图对应第一个样例,蓝色框表示块。请编写程序,找出这样一组块。

输入格式

第一行包含一个整数 $n$($1 \le n \le 50$),表示数组的长度。 第二行包含 $n$ 个整数 $a[1], a[2], \dots, a[n]$($-10^5 \le a_i \le 10^5$)。

输出格式

第一行输出整数 $k$($1 \le k \le n$),表示块的数量。 接下来的 $k$ 行,每行输出一对整数 $l_i, r_i$($1 \le l_i \le r_i \le n$),表示第 $i$ 个块的左右端点。块的输出顺序任意。如果有多组答案,输出任意一组均可。

说明/提示

由 ChatGPT 4.1 翻译