Cod sursa(job #1773260)

Utilizator tanasaradutanasaradu tanasaradu Data 7 octombrie 2016 18:13:47
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include <bits/stdc++.h>
#define P 1000003
#define Q 123457
using namespace std;
ifstream fin("regiuni.in");
ofstream fout("regiuni.out");
int n,m;
struct Triplet
{
    int a,b,c;
};
struct Pereche
{
    int st,dr;
};
Pereche h[1001];
Triplet t[1001];
int F(Triplet t,int x,int y)
{
    return t.a*x+t.b*y+t.c;
}
inline bool Sortare(const Pereche A,const Pereche B)
{
    if(A.st==B.st)
        return A.dr<=B.dr;
    return A.st<B.st;
}
int main()
{
    int i,x,y,j,cod,cnt,codq;
    fin>>n>>m;
    for(i=1;i<=n;i++)
        fin>>t[i].a>>t[i].b>>t[i].c;
    for(i=1;i<=m;i++)
    {
        fin>>x>>y;
        cod=0;
        codq=0;
        for(j=1;j<=n;j++)
            if(F(t[j],x,y)>0)
            {
                cod=(cod*10+1)%P;
                codq=(codq*10+1)%Q;
            }
        else
        {
            cod=(cod*10+2)%P;
            codq=(codq*10+2)%Q;
        }
        h[i].st=codq;
        h[i].dr=cod;
    }
    sort(h+1,h+m+1,Sortare);
    cnt=1;
    for(i=2;i<=m;i++)
        if(h[i].st!=h[i-1].st || h[i].dr !=h[i-1].dr)cnt++;
    fout<<cnt<<"\n";
    fin.close();
    fout.close();
    return 0;
}