Cod sursa(job #37607)

Utilizator ciprifilipasFilipas Ciprian ciprifilipas Data 25 martie 2007 11:23:31
Problema Regiuni Scor 0
Compilator cpp Status done
Runda preONI 2007, Runda 4, Clasele 11-12 Marime 1.69 kb
/*
ID: CipriFilipas
PROG: regiuni
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <set>
#include <stdio.h>

using namespace std;

FILE* fout = fopen("regiuni.out", "wt");

vector<vector<bool> > a;
vector<vector<int> > e;
vector<int> sel;
int n, m, nr;

void Read();
int Verif(int a, int b, int c, int x, int y);

int main()
{
    Read();
    fprintf(fout, "%d", nr);
    fclose(fout);
    return 0;
}

void Read()
{
     FILE* fin = fopen("regiuni.in", "rt");
     fscanf(fin, "%d %d", &n, &m);
     e.resize(m+1);
     a.resize(n+1);
     sel.resize(n+1);
     for(int i = 1; i <= m; i++)
             e[i].resize(4);
     for(int i = 1; i <= n; i++)
             a[i].resize(m+1);

     for(int i = 1; i <= m; i++)
     {
             fscanf(fin, "%d %d %d", &e[i][1], &e[i][2], &e[i][3]);
     }
     int x, y;
     for(int i = 1; i <= n; i++)
     {
             fscanf(fin, "%d %d", &x, &y);
             for(int j = 1; j <= m; j++)
             {
                     if(Verif(e[j][1], e[j][2], e[j][3], x, y) > 0) a[i][j] = -1;
                     else a[i][j] = 1;
             }
     }
     for(int i = 1; i <= n; i++)
     {
             if(sel[i] == 0) sel[i] = nr;
             for(int j = 1; j <= n; j++)
             {
                     if(a[i] == a[j])
                     {
                             sel[j] = nr;
                     }
             }
             nr++;
     }
     fclose(fin);
}                        
                     
     
int Verif(int a, int b, int c, int x, int y)
{
    int val = 0;
    val = a*x + b*y + c;
    return val;
}