Cod sursa(job #1601602)

Utilizator TarabanDragosTaraban Dragos-Petru TarabanDragos Data 16 februarie 2016 00:38:33
Problema Regiuni Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.3 kb
#include<cstdio>
#include<vector>
#define mod 100313
#define MOD 666013
#define gf 43
#define mf 47
using namespace std;
struct dr{
    long long a;
    long long b;
    long long c;
}x[10100];
struct pct{
    long long x;
    long long y;
}s;
vector<pct>L[32767];
long long n,m,i,j,a,b,n1,n2,p,ok,nr;
FILE *f,*g;
long long ec( long long a, long long b, long long i ){
    return x[i].a * a + x[i].b * b + x[i].c > 0;
}
int main(){
    f=fopen("regiuni.in","r");
    g=fopen("regiuni.out","w");
    fscanf(f,"%lld%lld",&n,&m);
    for(i=1;i<=n;i++){
        fscanf(f,"%lld%lld%lld",&x[i].a,&x[i].b,&x[i].c);
    }
    for(i=1;i<=m;i++){
        fscanf(f,"%lld%lld",&a,&b);
        n1=n2=0;
        for(j=1;j<=n;j++){
            n1 = ( n1 * gf + ec( a , b , j ) ) % mod;
            n2 = ( n1 * mf + ec( a , b , j ) ) % MOD;
        }
        s.x=n1;
        s.y=n2;
        p = ( s.x ) % 32767;
        ok=1;
        for( j=0 ; j<L[p].size() ; j ++ ){
            if( L[p][j].x == s.x && L[p][j].y == s.y ){
                ok=0;
                break;
            }
        }
        if(ok){
            L[p].push_back(s);
        }
    }
    for(i=0;i<32767;i++){
        nr+=L[i].size();
    }
    fprintf(g,"%lld",nr);
    fclose(f);
    fclose(g);
    return 0;
}