Cod sursa(job #1367151)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 1 martie 2015 17:20:43
Problema Balanta Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.1 kb
#include <fstream>
#include <cstring>
#define DIM 1030
using namespace std;

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

int N, M, i, j, H[DIM], L[DIM];
int V[DIM], W[DIM], F[DIM], cod;
int K, t, nr1, nr2, pos;

void SetUp(){
     fin >> N >> M;
     for(i = 1; i <= N; i ++){
          H[i] = 1;
          L[i] = 1;
     }
     return;
}

void update_0(){
     for(i = 1; i <= K; i ++){
          H[V[i]] = 0; H[W[i]] = 0;
          L[V[i]] = 0; L[V[i]] = 0;
     }
     return;
}

void update_1(){
     memset(F, 0, sizeof(F));
     for(i = 1; i <= K; i ++)
          F[V[i]] = 1;
     for(i = 1; i <= N; i ++)
          if(F[i] == 0)
               H[i] = 0;
     memset(F, 0, sizeof(F));
     for(i = 1; i <= K; i ++)
          F[W[i]] = 1;
     for(i = 1; i <= N; i ++)
          if(F[i] == 0)
               L[i] = 0;
     return;
}

void update_2(){
     memset(F, 0, sizeof(F));
     for(i = 1; i <= K; i ++)
          F[W[i]] = 1;
     for(i = 1; i <= N; i ++)
          if(F[i] == 0)
               H[i] = 0;
     memset(F, 0, sizeof(F));
     for(i = 1; i <= K; i ++)
          F[V[i]] = 1;
     for(i = 1; i <= N; i ++)
          if(F[i] == 0)
               L[i] = 0;
     return;
}

void Balance(){
     for(t = 1; t <= M; t ++){
          fin >> K;
          memset(V, 0, sizeof(V));
          memset(W, 0, sizeof(W));
          for(i = 1; i <= K; i ++)
               fin >> V[i];
          for(i = 1; i <= K; i ++)
               fin >> W[i];
          fin >> cod;
          if(cod == 0) update_0();
          if(cod == 1) update_1();
          if(cod == 2) update_2();
     }
     return;
}

void Finish(){
     for(i = 1; i <= N; i ++){
          if(H[i] == 1){
               nr1 ++;
               pos = i;
          }
          if(L[i] == 1){
               nr2 ++;
               pos = i;
          }
     }
     if((nr1 == 1 && nr2 == 0) || (nr1 == 0 && nr2 == 1))
          fout << pos;
     else
          fout << 0;
     return;
}

int main(){
     SetUp();
     Balance();
     Finish();
     return 0;
}