Cod sursa(job #1279984)

Utilizator diana97Diana Ghinea diana97 Data 1 decembrie 2014 12:10:16
Problema Regiuni Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

ifstream f ("regiuni.in");
ofstream g ("regiuni.out");

struct Ecuatie {
    short int a, b, c;
};
struct Punct {
    short int x, y;
    int regiune;
};

const int NMAX = 1000 + 1;
const int MOD = 12998111;

int n, m;
Ecuatie dreapta[1];
Punct punct[1];

void citeste() {
    f >> n >> m;
    for (int i = 1; i <= n; i++) f >> dreapta[i].a >> dreapta[i].b >> dreapta[i].c;
    for (int i = 1; i <= m; i++) {
        f >> punct[i].x >> punct[i].y;
        punct[i].regiune = 0;
    }
}

inline bool comp(Punct a, Punct b) {
    return a.regiune < b.regiune;
}

void rezolva() {
    int rez;
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= m; j++) {
            rez = dreapta[i].a * punct[j].x + dreapta[i].b * punct[j].y + dreapta[i].c;
            if (rez < 0) punct[j].regiune = ((punct[j].regiune) * 10 + 1) % MOD;
            else punct[j].regiune = ((punct[j].regiune) * 10 + 2) % MOD;
        }
    }
}

void numara() {
    int sol = 1;
    for (int i = 2; i <= m; i++)
        if (punct[i].regiune != punct[i - 1].regiune) sol++;
    g << sol << '\n';
}

int main() {
    citeste();
    rezolva();
    sort (punct + 1, punct + m + 1, comp);
    numara();
    return 0;
}