Pagini recente » Cod sursa (job #664057) | Cod sursa (job #1910467) | Cod sursa (job #2225487) | Cod sursa (job #732150) | Cod sursa (job #1094175)
#include<stdio.h>
#define DIM 1001
FILE *f=fopen("regiuni.in","r"), *g=fopen("regiuni.out","w");
long int n, m, a[DIM], b[DIM], c[DIM], x[DIM], y[DIM], v[DIM], stare[DIM], secund[DIM], k;
// stare [ i ] = 0, grupa neimpartita
// = 1, grupa impartita cu >0
// = 2, grupa impartita cu <0
// secund [ i ] = grupa i unde are impartirea secunda
void citire(){
long int i;
fscanf(f,"%ld %ld\n",&n,&m);
for(i=1;i<=n;i++)
fscanf(f,"%ld %ld %ld\n",&a[i],&b[i],&c[i]);
for(i=1;i<=m;i++)
fscanf(f,"%ld %ld\n",&x[i],&y[i]);
}
void initializare(){long int i;for(i=1;i<=m;i++){stare[i]=0;secund[i]=0;}}
void rezolvare(){
long int i, j;
k=1; for(i=1;i<=m;i++)v[i]=k;
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
if( a[i] * x[j] + b[i] * y[j] + c[i] > 0 ){
if ( stare[ v[j] ]==0 ){ stare[ v[j] ]=1; }
else if( stare[ v[j] ]==2 ){
if( secund[ v[j] ] == 0 ){ k++; secund[ v[j] ]= k; }
v[j]= secund[ v[j] ];
}
}
else{
if ( stare[ v[j] ]==0 ){ stare[ v[j] ]=2; }
else if( stare[ v[j] ]==1 ){
if( secund[ v[j] ] == 0 ){ k++; secund[ v[j] ]= k; }
v[j]= secund[ v[j] ];
}
}
}
initializare();
}
fprintf(g,"%ld\n",k);
//for(i=1;i<=m;i++){fprintf(g,"%ld ",v[i]);}
}
int main(){
citire();
rezolvare();
return 0;
}