比赛 2025暑期集训第7场 评测结果 AAAAWWAWAA
题目名称 倒水 最终得分 70
用户昵称 OTTF 运行时间 1.406 s
代码语言 C++ 内存使用 3.65 MiB
提交时间 2025-08-11 15:34:34
显示代码纯文本

#include <cstdio>
#include <iostream>

using namespace std;

int maxs[4];
int nows[4];
int x;
int dep;

bool dfs (int now) {
	if (nows[1] == x || nows[2] == x || nows[3] == x) {
		return true;
	}
	if (now == dep) {
		return false;
	}

	int ti, tj;
	for (int i = 1; i <= 3; i++) {
		if (nows[i]) {
			ti = nows[i];
			for (int j = 1; j <= 3; j++) {
				if (i != j && (maxs[j] > nows[j])) {
					tj = nows[j];

					if (nows[i] > (maxs[j] - nows[j])) {
						nows[i] -= (maxs[j] - nows[j]);
						nows[j] = maxs[j];
					}
					else {
						nows[j] += nows[i];
						nows[i] = 0;
					}

					if (dfs (now + 1)) {
						return true;
					}

					nows[i] = ti;
					nows[j] = tj;
				}
			}
		}
	}

	return false;
}

int main () {
	
	freopen ("pourwater.in", "r", stdin);
	freopen ("pourwater.out", "w", stdout);

	cin >> maxs[1] >> maxs[2] >> maxs[3] >> x;
	nows[1] = maxs[1];

	if (x > maxs[1]) {
		cout << "false" << endl;
		return 0;
	}

	for (dep = 1; dep <= 16; dep++) {
		if (dfs (0)) {
			cout << dep << endl;
			return 0;
		}
	}

	cout << "false" << endl;
	
	return 0;
}