Pagini recente » Cod sursa (job #750290) | Cod sursa (job #2264972) | Cod sursa (job #288024) | Cod sursa (job #643799) | Cod sursa (job #501560)
Cod sursa(job #501560)
# include <cstdio>
const char *FIN = "balanta.in", *FOU = "balanta.out" ;
const int MAX = 1 << 10 ;
bool A[MAX], B[MAX], st[MAX], dr[MAX] ;
short Ts[MAX], Td[MAX] ;
int N, M ;
bool check ( void ) {
int sol = 0 ;
for ( int i = 0; i < N; ++i ) {
sol += A[i] + B[i] ;
}
return sol == 1 ;
}
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
scanf ( "%d %d", &N, &M ) ;
for ( int i = 0; i < N; ++i ) {
A[i] = B[i] = 1 ;
}
for ( int K, R ; M ; --M ) {
scanf ( "%d", &K ) ;
for ( int i = 0; i < K; ++i ) {
st[i] = 0 ;
scanf ( "%d", Ts + i ) ;
}
for ( int i = 0; i < K; ++i ) {
dr[i] = 0 ;
scanf ( "%d", Td + i ) ;
}
for ( int i = 0; i < K; ++i ) {
st[ Ts[i] ] = dr[ Td[i] ] = 1 ;
}
scanf ( "%d", &R ) ;
switch ( R ) {
case 0 :
for ( int i = 0; i < K; ++i ) {
A[ Ts[i] ] = A[ Td[i] ] = B[ Ts[i] ] = B[ Td[i] ] = 0 ;
}
break ;
case 1 :
for ( int i = 0; i < N; ++i ) {
A[i] &= dr[i], B[i] &= st[i] ;
}
break ;
case 2 :
for ( int i = 0; i < N; ++i ) {
A[i] &= st[i], B[i] &= dr[i] ;
}
break ;
}
}
if ( check () ) {
for ( int i = 0; i < N; ++i ) {
if ( A[i] || B[i] ) {
fprintf ( fopen ( FOU, "w" ) , "%d", i ) ;
return 0 ;
}
}
} else {
fprintf ( fopen ( FOU, "w" ) , "0" ) ;
}
}