Cod sursa(job #42729)

Utilizator pauldbPaul-Dan Baltescu pauldb Data 29 martie 2007 14:26:16
Problema Regiuni Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#include <vector>

using namespace std;

#define maxn 1010
#define pb push_back 

#define mod 1913
#define mod2 31991
#define baza 33
#define b2 17 

int n,m,sol;
int a[maxn],b[maxn],c[maxn];
vector <short> h[mod];

int main()
{
    freopen("regiuni.in","r",stdin);
    freopen("regiuni.out","w",stdout);
    
    scanf("%d %d ",&n,&m);
    
    int i,p,r,j,x,y,p2,r2,found;
    
    for (i=1;i<=n;i++) scanf("%d %d %d ",&a[i],&b[i],&c[i]);
    
    for (i=1;i<=m;i++)
    {
        scanf("%d %d ",&x,&y);
        p=0;
        r=1;
        p2=0;
        r2=1;
        
        for (j=1;j<=n;j++) 
        {
            r=(r*baza)%mod;
            r2=(r2*b2)%mod2;
            if (a[j]*x+b[j]*y+c[j]>0) 
            {
                p=(p+r)%mod;
                p2=(p2+r2)%mod2;
            }
        }
        
        found=0;
        for (j=0;j<h[p].size();j++)
          if (h[p][j]==p2)
          {
                 found=1;
                 break;
          }
          
        if (!found)
        {
             sol++;
             h[p].pb(p2);
        }
    }    
    
    printf("%d\n",sol);
    
    return 0;
}