Cod sursa(job #1279388)

Utilizator alexandra_udristoiuUdristoiu Alexandra Maria alexandra_udristoiu Data 30 noiembrie 2014 11:34:44
Problema Balanta Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.21 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;
}