#include <bits/stdc++.h>
using namespace std;
struct ins{
char type;
long long c;
};
int n;
const long long M = 1000000000000000;
vector < int > v;
vector < vector < ins > > programs;
vector < int > used;
vector < long long > y;
long long x;
long long ans;
void check(){
x = 0;
y.clear();
y.resize(n);
used.clear();
used.resize(n);
for(int i : v){
ins cur = programs[i][used[i]];
if(cur.type == 'W'){
y[i] = x;
}
if(cur.type == 'Z'){
x = y[i];
}
if(cur.type == '+'){
y[i] += cur.c;
}
if(cur.type == '-'){
y[i] -= cur.c;
}
used[i]++;
}
ans = min(ans, x);
}
int main(){
int t;
cin >> t;
while(t--){
ans = M;
v.clear();
used.clear();
x = 0;
y.clear();
cin >> n;
used.resize(n);
programs.resize(n);
y.resize(n);
for (int i = 0; i < n; ++i)
{
//cout << "i = " << i << endl;
int l;
cin >> l;
programs[i].resize(l);
for (int k = 0; k < l; ++k)
{
v.push_back(i);
// tutaj wczytanie programu
char a;
cin >> a;
ins ins1;
if(a == 'W'){
ins1.type = 'W';
}
if(a == 'Z'){
ins1.type = 'Z';
}
if(a == '+'){
ins1.type = '+';
cin >> ins1.c;
}
if(a == '-'){
ins1.type = '-';
cin >> ins1.c;
}
programs[i][k] = ins1;
}
}
check();
//return 0;
while(next_permutation(v.begin(), v.end())){
check();
}
check();
cout << ans << endl;
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | #include <bits/stdc++.h> using namespace std; struct ins{ char type; long long c; }; int n; const long long M = 1000000000000000; vector < int > v; vector < vector < ins > > programs; vector < int > used; vector < long long > y; long long x; long long ans; void check(){ x = 0; y.clear(); y.resize(n); used.clear(); used.resize(n); for(int i : v){ ins cur = programs[i][used[i]]; if(cur.type == 'W'){ y[i] = x; } if(cur.type == 'Z'){ x = y[i]; } if(cur.type == '+'){ y[i] += cur.c; } if(cur.type == '-'){ y[i] -= cur.c; } used[i]++; } ans = min(ans, x); } int main(){ int t; cin >> t; while(t--){ ans = M; v.clear(); used.clear(); x = 0; y.clear(); cin >> n; used.resize(n); programs.resize(n); y.resize(n); for (int i = 0; i < n; ++i) { //cout << "i = " << i << endl; int l; cin >> l; programs[i].resize(l); for (int k = 0; k < l; ++k) { v.push_back(i); // tutaj wczytanie programu char a; cin >> a; ins ins1; if(a == 'W'){ ins1.type = 'W'; } if(a == 'Z'){ ins1.type = 'Z'; } if(a == '+'){ ins1.type = '+'; cin >> ins1.c; } if(a == '-'){ ins1.type = '-'; cin >> ins1.c; } programs[i][k] = ins1; } } check(); //return 0; while(next_permutation(v.begin(), v.end())){ check(); } check(); cout << ans << endl; } } |
English