Chef has 3 weights, weighing x, y, and z. Can he measure a weight of exactly W using these?
EXPLANATION:
There are seven possible positive weights that Chef can measure, namely, \{x, y, z, x+y, x+z, y+z, x+y+z\}. The answer is “Yes” if W equals one of these seven, and “No” otherwise.
TIME COMPLEXITY
\mathcal{O}(1) per test case.
CODE:
Editorialist's code (Python)
for _ in range(int(input())):
w, a, b, c = map(int, input().split())
s = {a, b, c, a+b, a+c, b+c, a+b+c}
print('yes' if w in s else 'no')
Hi, I’m new here in code chef and it’s great to find this site to practice my coding skills. I’d like to ask about the WGHTS problem, I’m really curious about my solution because on my test cases it doesn’t have any errors but once I submit there are test cases that are failing, my approach is more on handling dynamic length of an array. Looking forward if anyone can pinpoint any sample test case that would make the code fail, thank you!
using System;
public class Test
{
public static void Main()
{
int t = int.Parse(Console.ReadLine());
for (int ctr = 0; ctr < t; ctr++) {
string ret = "NO";
string[] input = Console.ReadLine().Split(' ');
bool breakLoop = false;
int totalWeight = int.Parse(input[0]);
// loop first to check equal data
for (int i = 1; i < input.Length; i++) {
if (totalWeight == int.Parse(input[i])) {
ret = "YES";
breakLoop = true;
break;
}
}
if (!breakLoop) {
for (int incLoop = 1; incLoop < input.Length; incLoop++) {
for (int decLoop = input.Length - 1; decLoop >= 1; decLoop--) {
if (incLoop != decLoop) {
if (totalWeight ==
int.Parse(input[decLoop]) +
int.Parse(input[incLoop])) {
ret = "YES";
breakLoop = true;
break;
}
}
}
if (breakLoop){
break;
}
}
}
Console.WriteLine(ret);
}
}
Ahhh alright, you are correct. I’m just considering if total weight is equal to one of the given ones and adding just two of them. I didn’t consider adding more than 2 elements. Thank you for the clarification, I really overlooked this one. I appreciate it!