Pagini recente » Cod sursa (job #555188) | Cod sursa (job #3230257) | Cod sursa (job #2589349) | Cod sursa (job #49122) | Cod sursa (job #657422)
Cod sursa(job #657422)
#include <fstream>
#include <string.h>
using namespace std;
ifstream f("balanta.in");
ofstream g("balanta.out");
int n,m,x[1024],igr,iu,k;
bool st[1024],dr[1024];
bool gr[1024],u[1024];
long long sgr=0,su;
int main(void){
register int i,j,r;
f>>n>>m;
sgr=(n*(n+1))/2;
su=(n*(n+1))/2;
igr=iu=n;
for(i=1;i<=m;i++){
f>>k;
memset(st,0,sizeof(st));
memset(dr,0,sizeof(dr));
for(j=1;j<=k;j++){
f>>x[j];
st[x[j]]=true;
}
for(j=1;j<=k;j++){
f>>x[j+k];
dr[x[j+k]]=true;
}
f>>r;
if(!r){
//echiribru;
for(j=1;j<=2*k;j++){
if(gr[x[j]]==false)
gr[x[j]]=true,igr--,sgr-=j;
if(u[x[j]]==false)
u[x[j]]=true,iu--,su-=j;
}
}
else if(r==1)
//talerul st e mai greu
for(j=1;j<=n;j++){
if(!gr[j] && !st[j])
gr[j]=true,igr--,sgr-=j;
if(!u[j] && !dr[j])
u[j]=true,iu--,su-=j;
}
else{
//talerul dr mai greu
for(j=1;j<=n;j++){
if(!gr[j] && !dr[j])
gr[j]=true,igr--,sgr-=j;
if(!u[j] && !st[j])
u[j]=true,iu--,su-=j;
}
}
}
if(igr+iu==1){
if(igr==1)
g<<sgr;
else if(iu==1)
g<<su;
}
else
g<<"0";
return 0;
}