Pagini recente » Cod sursa (job #1818919) | Cod sursa (job #2377860) | Cod sursa (job #487156) | Cod sursa (job #660838) | Cod sursa (job #301571)
Cod sursa(job #301571)
using namespace std;
#include <cstdio>
#include <vector>
#define Nmax 1010
int *gr[Nmax];
struct puncte {int x, y;} p[Nmax];
struct drepte {int a, b, c;} d[Nmax];
int n, m, i, l, j, pt, nr, jos[Nmax], sus[Nmax];
int main(){
FILE *f = fopen("regiuni.in", "r");
FILE *g = fopen("regiuni.out", "w");
fscanf(f,"%d %d", &n, &m);
for(i = 1; i <= n; i++)
fscanf(f,"%d %d %d", &d[i].a, &d[i].b, &d[i].c);
//destroy(A, A + 2);
nr = 1;
//gr[1].push_back(m);
gr[1] = new int[m + 2];
gr[1][0] = 0;
for(i = 1; i <= m; i++){
fscanf(f,"%d %d", &p[i].x, &p[i].y);
gr[1][++gr[1][0]] = i;
}
for(i = 1; i <= n; i++){
for(j = 1; j <= nr; j++){
sus[0] = 0; jos[0] = 0;
for(l = 1; l <= gr[j][0]; l++){
pt = gr[j][l];
if( d[i].a * p[pt].x + d[i].b * p[pt].y + d[i].c > 0 )
sus[++sus[0]] = pt;
else
jos[++jos[0]] = pt;
}
if( sus[0] && jos[0] ){
///destroy(gr[j], gr[j] + 1);
delete(gr[j]);
//gr[j].push_back(sus[0]);
gr[j] = new int [sus[0] + 2];
gr[j][0] = sus[0];
for(l = 1; l <= sus[0]; l++)
gr[j][l] = sus[l];
//gr[++nr].push_back(jos[0]);
nr++; gr[nr] = new int [jos[0] + 2];
gr[nr][0] = jos[0];
for(l = 1; l <= jos[0]; l++)
gr[nr][l] = jos[l];
}
}
}
fprintf(g,"%d",nr);
fclose(f);
fclose(g);
return 0;
}