Cod sursa(job #2708718)

Utilizator Botnaru_VictorBotnaru Victor Botnaru_Victor Data 19 februarie 2021 11:38:55
Problema Elementul majoritar Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.25 kb
#include <bits/stdc++.h>

#define nmax 30002
using namespace std;

int ver[nmax],ori[nmax];
int sx,sy,fx,fy;
int tx,ty,cros=0;

int mn(int a, int b)
{
    return a>b?b:a;
}
int mx(int a, int b)
{
    return a>b?a:b;
}

int cmmdc(int a, int b)
{
    while(a!=b)
    {
        if(a>b) a-=b;
        else b-=a;
    }
    return a;
}

int main()
{
    freopen("parc.in","r",stdin);
    freopen("parc.out","w",stdout);


    int m,n;
    int up,down,left,right;
    scanf("%i %i",&n,&m);// nu avem nevoie de dimensiuni
    scanf("%i %i %i %i",&sx,&sy,&fx,&fy);
    up=mn(sy,fy), down=mx(sy,fy);
    left=mn(sx,fx), right=mx(sx,fx);
    ty=down-up;
    tx=right-left;
    scanf("%i",&n);
    for(int i=0;i<n;i++)
    {
        int a,b;
        scanf("%i %i",&a,&b);
        ver[mx(a,b)]=1;
        ver[mn(a,b)]=-1;
        if(mn(a,b)>=left&&mx(a,b)<=right) {tx-=(mx(a,b)-mn(a,b)); cros+=(mx(a,b)-mn(a,b));}
    }
    scanf("%i",&m);
    for(int i=0;i<m;i++)
    {
        int a,b;
        scanf("%i %i",&a,&b);
        ori[mx(a,b)]=1;
        ori[mn(a,b)]=-1;
        if(mn(a,b)>=up&&mx(a,b)<=down) {ty-=(mx(a,b)-mn(a,b)); cros+=(mx(a,b)-mn(a,b));}
    }
    printf("%f \n1",sqrt(pow(tx,2)+pow(ty,2))+cros);

    return 0;
}