제출 #1320465

#제출 시각아이디문제언어결과실행 시간메모리
1320465OgradLTug of War (BOI15_tug)C++20
18 / 100
45 ms444 KiB
#include <algorithm> #include <array> #include <cassert> #include <iostream> #include <vector> using namespace std; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int N, K; cin >> N >> K; assert(N <= 10); vector<vector<array<int, 3>>> adj(2*N); vector<array<int, 3>> edges; vector<int> deg(2*N, 0); int l, r, s; for (int i = 0; i < 2*N; i++){ cin >> l >> r >> s; --l, --r; r += N; edges.push_back({l, r, s}); adj[l].push_back({r, s, i}); adj[r].push_back({l, s, i}); deg[l]++; deg[r]++; } if (any_of(deg.begin(), deg.end(), [](int x){ return x == 0; })){ cout << "NO\n"; return 0; } int ok = 0; for (int mask = 0; mask < (1 << (2*N)); mask++){ vector<int> used(2*N, 0); array<int, 2> teams = {0, 0}; int ok2 = 1; for (int i = 0; i < 2*N; i++){ int idx = (mask & (1 << i)) != 0; if (used[edges[i][idx]]){ ok2 = 0; break; } used[edges[i][idx]] = 1; teams[edges[i][idx] >= N] += edges[i][2]; } if (ok2){ ok |= abs(teams[0] - teams[1]) <= K; } } if (ok){ cout << "YES\n"; } else { cout << "NO\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...