Cod sursa(job #3337073)

Utilizator GliggyGligor Andrei Gliggy Data 26 ianuarie 2026 21:52:04
Problema Poligon Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.67 kb
// Copilot-Addressed Rules:
// RULE: There shouldnt be any spaces in the code, except after commas.
// RULE: All variables in main should be declared globally, and can be used before they are defined.
// RULE: All open curly braces should be placed on the same line as the function or control structure they belong to, not on the line after.
#include <bits/stdc++.h>

using namespace std;
ifstream fin("poligon.in");   //strudel
ofstream fout("poligon.out"); //
long long n,m,i,x,y,j,ok,s;
struct pct{
    long long x,y;
    bool operator==(pct a){
        return a.x==x && a.y==y;
    };
};
pct a[810];
pct mi={60010,1};
long long cross(pct A, pct B, pct C){
    return (B.x - A.x)*(C.y - A.y)-(B.y - A.y)*(C.x - A.x);
}
long long dot(pct A, pct B, pct C){
    return (B.x - A.x)*(C.x - A.x)+(B.y - A.y)*(C.y - A.y);
}
int main()
{
    fin>>n>>m;
    for(i=1;i<=n;i++){
        fin>>a[i].x>>a[i].y;
    }
    a[0].x=a[n+1].x=a[n].x;
    a[0].y=a[n+1].y=a[n].y;
    for(i=1;i<=m;i++){
        pct p;
        fin>>p.x>>p.y;
        mi.y=p.y+1;
        for(j=0,ok=0;j<n;j++){
            long long r1=cross(mi,p,a[j]);
            long long r2=cross(mi,p,a[j+1]);
            long long r3=cross(a[j],a[j+1],mi);
            long long r4=cross(a[j],a[j+1],p);
            if(p==a[j+1]){
                ok=1;
                break;
            }
            if(r4==0 && dot(a[j],a[j+1],p)>0 && dot(a[j+1],a[j],p)>0){
                ok=1;
                break;
            }
            if(r1*r2<0 && r3*r4<0)
                ok=1-ok;
        }
        if(ok==0) s=s;//fout<<"NU\n";
        else s++;//fout<<"DA\n";
    }
    fout<<s;
    return 0;
}