Pagini recente » Cod sursa (job #1783544) | Cod sursa (job #1088038) | Cod sursa (job #1952528) | Cod sursa (job #1737474) | Cod sursa (job #2158429)
#include <iostream>
#include <fstream>
#include <vector>
#define MAXN 1030
using namespace std;
ifstream in("balanta.in");
ofstream out("balanta.out");
//marchez cu -1 neaparitia 0 -> imposibilitatea >= 1 -> posibiliatatea
int v[MAXN],semn[MAXN],n,q,k,directie;
vector<int>retine_numere;
void init(){
for(int i = 0; i < MAXN; i++){
v[i] = -1;
semn[i] = -1;
}
}
void go(int numar,int i){
if(semn[numar] == -1 || semn[numar] == directie)
semn[numar] = directie;
else
v[numar] = 0;
}
void afis(){
for(int i = 1; i <= n; i++)
cerr<<i<<" : "<<v[i]<<" "<<semn[i]<<endl;
cerr<<endl<<"============"<<endl;
}
void rez(int start,int finish,int directie){
int numar;
if(directie != 0){
for(int i = start; i < finish; i++){
numar = retine_numere[i];
if(v[numar] == -1){
v[numar] = 1;
go(numar,i);
}else if(v[numar] > 0){
v[numar]++;
go(numar,i);
}
}
}else{
for(int i = 0; i < 2*k; i++){
numar = retine_numere[i];
v[numar] = 0;
}
}
}
void change_direction(){
if(directie == 1)
directie = 2;
else
directie = 1;
}
int main()
{
init();
in>>n>>q;
int nr;
for(int i = 1; i <= q; i++){
in>>k;
retine_numere.clear();
for(int j = 0; j < 2*k; j++){
in>>nr;
retine_numere.push_back(nr);
}
in>>directie;
rez(0,k,directie);
change_direction();
rez(k,2*k,directie);
}
int maxim = 0,ans;
bool ok = true;
for(int i = 1; i <= n; i++){
if(v[i] > maxim){
maxim = v[i];
ok = true;
ans = i;
}else if(v[i] == maxim)
ok = false;
}
if(ok)
out<<ans;
else
out<<0;
return 0;
}