Submission #677205

#TimeUsernameProblemLanguageResultExecution timeMemory
677205faribourzTug of War (BOI15_tug)C++14
0 / 100
15 ms9940 KiB
// Only GOD // believe in yourself // nemidam del be in darde donya! #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; typedef pair<int, int> pii; #define F first #define S second #define pb push_back #define all(x) x.begin(), x.end() #define bit(x, y) ((x >> y)&1) #define sz(x) (int)x.size() #define kill(x) return cout << x << '\n', void() #define KILL(x) return cout << x << '\n', 0 #define int ll const int N = 3e5+100; vector<int> G[N]; int s[N]; vector<int> greedy; bool mark[N]; vector<int> guni; int n, k; void DFS(int v){ mark[v] = 1; if(v <= 2*n) guni.pb(v); for(int u : G[v]){ if(!mark[u]) DFS(u); } } int32_t main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n >> k; for(int i = 1; i <= 2*n; i++){ int v, u; cin >> v >> u; G[i].pb(v+2*n);G[v+2*n].pb(i); G[i].pb(u+2*n);G[u+2*n].pb(i); cin >> s[i]; } for(int i =1; i <= 2*n; i++){ if(!mark[i]){ guni.clear(); DFS(i); int res =0 ; for(int j =0 ; j < sz(guni);j++){ if(j & 1){ res += s[guni[j]]; } else{ res -= s[guni[j]]; } } greedy.pb(abs(res)); } } int n = sz(greedy); for(int mask = 0; mask < (1<<n); mask++){ int res =0 ; for(int i = 0; i < n; i++){ if(bit(mask, i)){ res -= greedy[i]; } else res += greedy[i]; } if(abs(res)<= k) KILL("YES"); } KILL("NO"); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...