#include <bits/stdc++.h>
using namespace std;
vector<bitset<50001>> lol;
//vector<bitset<30>> lol;
uint64_t n,m,q;
int main() {
uint64_t tmp1,tmp2,tmp3;
cin >> n >> m >> q;
n++;
lol.resize(n+m+1);
for (int i=1; i<n; i++) {
for (int j=1; j<n; j++) if (j % i == 0) lol.at(i).set(j,true);
}
for (int i=0; i<m; i++) {
cin >> tmp1 >> tmp2;
switch(tmp1) {
case 1: {
cin >> tmp3;
lol.at(n+i) = lol.at(tmp2) | lol.at(tmp3);
break;
}
case 2: {
cin >> tmp3;
lol.at(n+i) = lol.at(tmp2) & lol.at(tmp3);
break;
}
case 3: {
lol.at(n+i) = ~lol.at(tmp2);
break;
}
}
//cout << "n+i=" << n+i << " | " << lol.at(n+i).to_string() << endl;
}
for (int i=0; i<q; i++) {
cin >> tmp1 >> tmp2;
if (lol.at(tmp1).test(tmp2) == true) cout << "TAK\n";
else cout << "NIE\n";
}
return 0;
}
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 | #include <bits/stdc++.h> using namespace std; vector<bitset<50001>> lol; //vector<bitset<30>> lol; uint64_t n,m,q; int main() { uint64_t tmp1,tmp2,tmp3; cin >> n >> m >> q; n++; lol.resize(n+m+1); for (int i=1; i<n; i++) { for (int j=1; j<n; j++) if (j % i == 0) lol.at(i).set(j,true); } for (int i=0; i<m; i++) { cin >> tmp1 >> tmp2; switch(tmp1) { case 1: { cin >> tmp3; lol.at(n+i) = lol.at(tmp2) | lol.at(tmp3); break; } case 2: { cin >> tmp3; lol.at(n+i) = lol.at(tmp2) & lol.at(tmp3); break; } case 3: { lol.at(n+i) = ~lol.at(tmp2); break; } } //cout << "n+i=" << n+i << " | " << lol.at(n+i).to_string() << endl; } for (int i=0; i<q; i++) { cin >> tmp1 >> tmp2; if (lol.at(tmp1).test(tmp2) == true) cout << "TAK\n"; else cout << "NIE\n"; } return 0; } |
English