CF31A Worms Evolution 题解

Content

有一个长度为 \(n\) 的数组 \(a_1,a_2,a_3,...,a_n\),试找出一个三元组 \((i,j,k)\),使得 \(a_i=a_j+a_k\)

数据范围:\(3\leqslant n\leqslant 100,1\leqslant a_i\leqslant 1000,1\leqslant i,j,k\leqslant n,j\neq k\)

Solution

由于数据范围很小,因此我们可以直接 \(\mathcal{O}(n^3)\) 枚举,每次枚举判断是否有一个数等于另外两个数的和就好了(注意,不能一个数同时取两次)。全枚举完了还没有找到,直接输出 \(-1\)

Code

int n, a[107];

int main() {
	getint(n);
	_for(i, 1, n)	getint(a[i]);
	_for(k, 1, n)
		_for(i, 1, n)
			_for(j, 1, n)
				if(a[i] + a[j] == a[k] && i != j) {
					printf("%d %d %d", k, i, j);
					return 0;
				}
	printf("-1");
	return 0;
}
posted @ 2021-12-17 14:22  Eason_AC  阅读(33)  评论(0)    收藏  举报