Cod sursa(job #2546352)
Utilizator | Data | 14 februarie 2020 09:17:14 | |
---|---|---|---|
Problema | Balanta | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 2.01 kb |
#include <fstream>
#include <bitset>
using namespace std;
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int n,m,i,j,k,r,f[1025],cnt,sol;
bitset <1025> x,y;
int main(){
fin>>n>>m;
for(;m;m--){
fin>>k;
x.reset();
y.reset();
for(i=1;i<=k;i++)
fin>>j,x[j]=1;
for(i=1;i<=k;i++)
fin>>j,y[j]=1;
fin>>r;
if(r==0){
for(i=1;i<=n;i++)
if(x[i] || y[i])
f[i]=-1;
}
if(r==1){
for(i=1;i<=n;i++){
if(x[i]==0 && y[i]==0)
f[i]=-1;
else
if(x[i])
if(f[i]==2 || f[i]==-1)
f[i]=-1;
else
f[i]=1;
else
if(f[i]==1 || f[i]==-1)
f[i]=-1;
else
f[i]=2;
}
}
if(r==2){
for(i=1;i<=n;i++){
if(x[i]==0 && y[i]==0)
f[i]=-1;
else
if(x[i])
if(f[i]==1 || f[i]==-1)
f[i]=-1;
else
f[i]=2;
else
if(f[i]==2 || f[i]==-1)
f[i]=-1;
else
f[i]=1;
}
}
}
for(i=1;i<=n;i++){
if(f[i]!=-1 && f[i]!=0){
if(sol==0)
sol=i;
else{
fout<<0<<"\n";
return 0;
}
}
if(f[i]==0)
if(cnt==0)
cnt=i;
else
cnt=-1;
}
if(sol==0 && cnt!=-1)
fout<<cnt;
else
fout<<sol;
return 0;
}