Pagini recente » Cod sursa (job #2364685) | Cod sursa (job #1443008) | Cod sursa (job #2646441) | Cod sursa (job #72320) | Cod sursa (job #2236213)
#include <bits/stdc++.h>
using namespace std;
ifstream f("balanta.in");
ofstream g("balanta.out");
typedef vector<int> mult;
mult operator *(mult X,mult Y)
{
mult Z;
int j=0;
for(int i=0;i<X.size();i++)
{
if(j==Y.size()) break;
while(X[i]>Y[j]) j++;
if(X[i]==Y[j]) Z.push_back(Y[j++]);
}
return Z;
}
mult operator +(mult X,mult Y)
{
mult Z;
map<int,bool> fr;
for(int i=0;i<X.size();i++) fr[X[i]]=1;
for(int i=0;i<Y.size();i++) fr[Y[i]]=1;
for(auto i:fr)
Z.push_back(i.first);
return Z;
}
mult operator -(mult X,mult Y)
{
mult Z;
mult P=X*Y;
int j=0;
for(int i=0;i<X.size();i++)
{
if(j==P.size()) break;
if(X[i]==P[j]) j++;
else Z.push_back(X[i]);
}
for(int i=P.size();i<X.size();i++)
Z.push_back(X[i]);
return Z;
}
int main()
{
int N,M;
f>>N>>M;
vector<int> H(N),L(N);
for(int i=0;i<N;i++)
H[i]=L[i]=i+1;
for(;M--;)
{
int K,r;
f>>K;
vector<int> A(K),B(K);
for(auto &i:A) f>>i;
for(auto &i:B) f>>i;
f>>r;
switch(r)
{
case 0:
H=H-(A+B),L=L-(A+B);
break;
case 1:
H=H*A,L=L*B;
break;
case 2:
H=H*B,L=L*A;
break;
}
}
if(L.size()==1 && H.size()==0) g<<L[0];
else
{
if(L.size()==0 && H.size()==1) g<<H[0];
else g<<0;
}
return 0;
}