Cod sursa(job #1317762)

Utilizator wGEORGEWGeorge Cioti wGEORGEW Data 15 ianuarie 2015 09:48:29
Problema Balanta Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 4.3 kb
#include<fstream>
using namespace std;
int n, m, i, j, k, p, u, mid, r, l, g, x, y;
int v1[1025], v2[1025], L[1025], G[1025];
ifstream fin("balanta.in");
ofstream fout("balanta.out");
int main(){
    fin>> n >> m;
    for(i = 1; i <= m; i++){
        fin>> k;
        for(j = 1; j <= k; j++){
            fin>> v1[j];
        }
        for(j = 1; j <= k; j++){
            fin>> v2[j];
        }
        fin>> r;
        if(r == 0){
            for(j = 1; j <= k; j++){
                L[v1[j]] = 1;
                L[v2[j]] = 1;
                G[v1[j]] = 1;
                G[v2[j]] = 1;
            }
        }
        else{
            if(r == 1){
                for(j = 1; j <= n; j++){
                    if(G[j] == 0){
                        p = 1;
                        u = k;
                        while(p <= u){
                            mid = (p + u) / 2;
                            if(v1[mid] == j){
                                break;
                            }
                            else{
                                if(v1[mid] > j){
                                    u = mid - 1;
                                }
                                else{
                                    p = mid + 1;
                                }
                            }
                        }
                        if(p > u){
                            G[j] = 1;
                        }
                    }
                    if(L[j] == 0){
                        p = 1;
                        u = k;
                        while(p <= u){
                            mid = (p + u) / 2;
                            if(v2[mid] == j){
                                break;
                            }
                            else{
                                if(v2[mid] > j){
                                    u = mid - 1;
                                }
                                else{
                                    p = mid + 1;
                                }
                            }
                        }
                        if(p > u){
                            L[j] = 1;
                        }
                    }
                }
            }
            else{
                for(j = 1; j <= n; j++){
                    if(G[j] == 0){
                        p = 1;
                        u = k;
                        while(p <= u){
                            mid = (p + u) / 2;
                            if(v2[mid] == j){
                                break;
                            }
                            else{
                                if(v2[mid] > j){
                                    u = mid - 1;
                                }
                                else{
                                    p = mid + 1;
                                }
                            }
                        }
                        if(p > u){
                            G[j] = 1;
                        }
                    }
                    if(L[j] == 0){
                        p = 1;
                        u = k;
                        while(p <= u){
                            mid = (p + u) / 2;
                            if(v1[mid] == j){
                                break;
                            }
                            else{
                                if(v1[mid] > j){
                                    u = mid - 1;
                                }
                                else{
                                    p = mid + 1;
                                }
                            }
                        }
                        if(p > u){
                            L[j] = 1;
                        }
                    }
                }
            }
        }
    }
    for(i = 1; i <= n; i++){
        if(L[i] == 0){
            x = i;
            l++;
        }
        if(G[i] == 0){
            y = i;
            g++;
        }
    }
    if(l == 1 && g == 0){
        fout<< x;
    }
    else{
        if(l == 0 && g == 1){
            fout<< y;
        }
        else{
            fout<< 0;
        }
    }
    return 0;
if(g==0)
fout<<" ";
}