Cod sursa(job #2184735)

Utilizator adiaioanaAdia R. adiaioana Data 24 martie 2018 10:58:42
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>
#include <algorithm>
#define M1 666013
#define M2 666019
using namespace std;
ifstream fin("regiuni.in");
ofstream fout("regiuni.out");
int m,n,gr,nr1,p,x,y,nr2;
struct dreapta{
int a,b,c;
}dr[1010];
struct chestie{
int r1,r2;
}v[1010];
int trans(int nr, int mod);
bool comp(chestie A,chestie B);
int main()
{
    fin>>m>>n;
    for(int i=1;i<=m;i++)
    {
        fin>>dr[i].a>>dr[i].b>>dr[i].c;
    }
    for(int i=1;i<=n;i++)
    {
        fin>>x>>y;
        nr1=nr2=0;
        for(int i=1;i<=m;i++)
        {
            if(dr[i].a*x+dr[i].b*y+dr[i].c<0)
                p=1;
            else p=0;
            nr1=nr1*10+p;
            nr1=nr1%M1;
            nr2=nr2*10+p;
            nr2=nr2%M2;
        }
        v[i].r1=nr1;
        v[i].r2=nr2;
    }
    sort(v+1,v+n+1,comp);
    gr=1;
    for(int i=1;i<n;i++)
        if(!(v[i].r1==v[i+1].r1&&v[i].r2==v[i+1].r2))
            gr++;
    fout<<gr<<'\n';
    return 0;
}
int trans(int nr, int mod)
{
    int p=1,np=0,c=0;
    while(nr)
    {
        c=nr%10;
        np=np*10+p*c;
        np=np%mod;
        nr=nr/10;
    }
    return np;
}
bool comp(chestie A,chestie B)
{
    return (A.r1<B.r1||(A.r1==B.r1&&A.r2<B.r2));
}