Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
#include
#include
#include
using namespace std; int n, m, k; struct vraboten { int plata, br_predmeti; vector
predmet; }; int dp[202][1 << 8][1 << 8]; vraboten vraboteni[100], kandidati[220]; int rec(int at, int p1, int p2) { if(__builtin_popcount(p1) == n and __builtin_popcount(p2) == n) { return 0; } if(at == k) { return 1e9; } if(dp[at][p1][p2] != -1) { return dp[at][p1][p2]; } int result = 1e9; int t1 = p1, t2 = p2; for(int i = 0; i < kandidati[at].br_predmeti; i++) { int x = kandidati[at].predmet[i]; if(t1 & (1 << x)) { t2 |= (1 << x); } else { t1 |= (1 << x); } } result = min(result, rec(at + 1, t1, t2) + kandidati[at].plata); result = min(result, rec(at + 1, p1, p2)); return dp[at][p1][p2] = result; } int main() { cin >> n >> m; int p1 = 0, p2 = 0; int suma_plata = 0; for(int i = 0; i < m; i++) { cin >> vraboteni[i].plata >> vraboteni[i].br_predmeti; suma_plata += vraboteni[i].plata; for(int j = 0; j < vraboteni[i].br_predmeti; j++) { int x; cin >> x; x--; vraboteni[i].predmet.push_back(x); if(p1 & (1 << x)) { p2 |= (1 << x); } else { p1 |= (1 << x); } } } cin >> k; for(int i = 0; i < k; i++) { cin >> kandidati[i].plata >> kandidati[i].br_predmeti; for(int j = 0; j < kandidati[i].br_predmeti; j++) { int x; cin >> x; x--; kandidati[i].predmet.push_back(x); } } memset(dp, -1, sizeof dp); cout << rec(0, p1, p2) + suma_plata << endl; return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)