Cod sursa(job #39876)

Utilizator CosminCosmin Negruseri Cosmin Data 27 martie 2007 04:09:48
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <stdio.h>
#include <vector>
#define FIN "regiuni.in"
#define FOUT "regiuni.out"
#define MAXM 1000
using namespace __gnu_cxx;
//using namespace std;

int n, m, i, j, k, num;
int a[MAXM], b[MAXM], c[MAXM], x, y;
vector<vector<pair<int, int> > > sets, sets1;
int main() {
  freopen(FIN, "r", stdin);
  freopen(FOUT, "w", stdout);
  num = 0;
  vector<pair<int, int> > set, set1;
  scanf("%d %d", &n, &m);
  for (i = 0; i < n; i++) {
    scanf("%d %d %d\n", &a[i], &b[i], &c[i]);
  }
  for (i = 0; i < m; i++) {
    scanf("%d %d\n", &x, &y);
    set.push_back(make_pair(x, y));
  }
  sets.push_back(set);
  for (i = 0; i < n; i++) {
    sets1.clear();
    for (j = 0; j < sets.size(); j++) {
      set.clear();
      set1.clear();
      for (k = 0; k < sets[j].size(); k++) {
        if (a[i] * sets[j][k].first + b[i] * sets[j][k].second + c[i] < 0)
          set.push_back(sets[j][k]);
         else set1.push_back(sets[j][k]);
      }
      if (set.size() > 0)
        sets1.push_back(set);
      if (set1.size() > 0)
        sets1.push_back(set1);
    }
    sets = sets1;
  }
  printf("%d\n", sets.size());
  return 0;
}