#include <bits/stdc++.h>
#define int long long
#define zet ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
using namespace std;
const int N = 6e4+555, M = 1e6+557, mod = 1e9+7;
int n, k, l[N], r[N], a[N], dp[N][5];
vector <int> st;
bool res;
vector <int> mp[N], m[N];
bool comp(pair<int, int> a, pair<int, int> b) {
return a.second <= b.second;
}
signed main() {
zet
cin >> n >> k;
for (int i = 0; i < 2*n; i++) {
cin >> l[i] >> r[i] >> a[i];
mp[l[i]].push_back(i);
m[r[i]].push_back(i);
}
if (n <= 10) {
for (int mk = 1; mk < (1 << (2*n)); mk++) {
int cnt = 0;
int ll[n+5], rr[n+5];
for (int i = 0; i <= n; i++) ll[i] = rr[i] = 0;
for (int i = 0; i < 2*n; i++) {
if ((1<<i)&mk) cnt++;
}
if (cnt != n) continue;
int ans = 0;
bool x = 0;
for (int i = 0; i < 2*n; i++) {
if ((1<<i) & mk) {
ll[l[i]]++;
if (ll[l[i]] > 1) {
x = 1;
break;
}
ans += a[i];
}
else {
rr[r[i]]++;
if (rr[r[i]] > 1) {
x = 1;
break;
}
ans -= a[i];
}
}
if (abs(ans) <= k && !x){
res = 1;
break;
}
}
} else {
res = 1;
for (int i = 1; i<= n; i++) {
if (m[i].size() == 0 || mp[i].size() == 0) res = 0;
}
}
cout << ((res) ? "YES" : "NO");
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |