Submission #115047

#TimeUsernameProblemLanguageResultExecution timeMemory
115047luciocfTug of War (BOI15_tug)C++14
41 / 100
117 ms920 KiB
#include <bits/stdc++.h>

using namespace std;

const int maxn = 1e5+10;

int l[maxn], r[maxn], s[maxn], grau[maxn];

bool mark[maxn];

int main(void)
{
	int n, k;
	scanf("%d %d", &n, &k);

	for (int i = 1; i <= 2*n; i++)
	{
		scanf("%d %d %d", &l[i], &r[i], &s[i]);
		r[i] += n;

		grau[l[i]]++, grau[r[i]]++;
	}

	if (n > 10)
	{
		bool ok = 1;
		for (int i = 1; i <= 2*n; i++)
			if (!grau[i])
				ok = 0;

		if (ok) printf("YES\n");
		else printf("NO\n");

		return 0;
	}

	bool ans = 0;

	for (int mask = 0; mask < (1<<(2*n)); mask++)
	{
		bool ok = 1;

		for (int i = 1; i <= 2*n; i++)
			mark[i] = 0;

		for (int i = 0; i < 2*n; i++)
		{
			if (mask&(1<<i))
			{
				if (mark[r[i+1]]) ok = 0;
				else mark[r[i+1]] = 1;
			}
			else
			{
				if (mark[l[i+1]]) ok = 0;
				else mark[l[i+1]] = 1;
			}
		}

		if (!ok) continue;

		int sa = 0, sb = 0;

		for (int i = 0; i < 2*n; i++)
		{
			if (mask&(1<<i))
				sb += s[i+1];
			else
				sa += s[i+1];
		}

		if (abs(sa-sb) <= k)
		{
			ans = 1;
			break;
		}
	}

	if (ans == 1) printf("YES\n");
	else printf("NO\n");
}

Compilation message (stderr)

tug.cpp: In function 'int main()':
tug.cpp:14:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d", &n, &k);
  ~~~~~^~~~~~~~~~~~~~~~~
tug.cpp:18:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d %d %d", &l[i], &r[i], &s[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...