Cod sursa(job #2910389)

Utilizator euyoTukanul euyo Data 20 iunie 2022 13:49:11
Problema Balanta Scor 30
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.27 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin( "balanta.in" );
ofstream fout( "balanta.out" );

set<int> sus1, sus2;

void del( set<int> &s, int val ) {
  if ( s.count(val) ) s.erase(s.find(val));
}

int main() {
  int n, m, k, res;
   
  fin >> n >> m;
  for ( int i = 1; i <= n; ++i ) {
	sus1.insert(i);
	sus2.insert(i);
  }
  while ( m-- ) {
	fin >> k;
    vector<int> left(k), right(k);
	for ( int i = 0; i < k; ++i ) {
	  fin >> left[i];
	}
	for ( int i = 0; i < k; ++i ) {
      fin >> right[i];
	}
    fin >> res;
	if ( res == 0 ) {
      for ( int i = 0; i < k; ++i ) {
	    del(sus1, left[i]), del(sus1, right[i]);
		del(sus2, left[i]), del(sus2, right[i]);
	  }
	} else if ( res == 1 ) {
	  for ( int i = 0; i < k; ++i ) {
	    del(sus1, right[i]);
		del(sus2, left[i]);
	  }
	} else {
	  for ( int i = 0; i < k; ++i ) {
        del(sus1, left[i]);
		del(sus2, right[i]);
	  }
	}
  }
  if ( sus1.size() == 1 && sus2.size() == 1 ) {
	fout << 0;
  } else if ( sus2.size() == 1 ) {
	if ( sus1.count(*sus2.begin()) ) {
	  fout << 0;
	} else {
	  fout << *sus2.begin();
	}
  } else if ( sus1.size() == 1 ) {
	if ( sus2.count(*sus1.begin()) ) {
	  fout << 0;
	} else {
	  fout << *sus1.begin();
	}
  } else {
    fout << 0;
  }
  fin.close();
  fout.close();
  return 0;
} // :/