Cod sursă (job #525427)

Utilizator avatar stefan.popescu Popescu Stefan stefan.popescu IP ascuns
Problemă Romb2 (clasele 9-10) Compilator cpp | 2,01 kb
Rundă Arhiva de probleme Status evaluat
Dată 8 feb. 2020 13:27:09 Scor 100
#include <iostream>
#include <fstream>
using namespace std;
ifstream in ("romb2.in");
ofstream out("romb2.out");
int dx, dy, k, Cx, Cy, cazuri;

double prodincr(double x1, double y1, double x2, double y2)
{
    return x1*y2-x2*y1;
}
long long det(double dx, double dy, int k, double x, double y)
{
    long long val=1;
    while(k--)
    {
        val=val*4;
        //cout<<x<<" "<<y<<" "<<dx<<" "<<dy<<"\n";

        if(x>0)
        {
            if(y>0) ///cadranul 1
            {
                if(prodincr(dx/2, dy/2, x, y)>0) ///zona 1
                {
                    y-=dy/2;
                    val-=3;
                }
                else ///zona 4
                {
                    x-=dx/2;
                }
            }
            else ///cadranul 4
            {
                if(prodincr(dx/2, -dy/2, x, y)>0) ///zona 4
                {
                    x-=dx/2;
                }
                else ///zona 3
                {
                    y+=dy/2;
                    val-=1;
                }
            }
        }
        else
        {
            if(y>0) ///cadranul 2
            {
                if(prodincr(-dx/2, dy/2, x, y)>0) ///zona 2
                {
                    val-=2;
                    x+=dx/2;
                }
                else ///zona 1
                {
                    val-=3;
                    y-=dy/2;
                }
            }
            else ///cadranul 3
            {
                if(prodincr(-dx/2, -dy/2, x, y)>0) ///zona 3
                {
                    y+=dy/2;
                    val-=1;
                }
                else ///zona 2
                {
                    x+=dx/2;
                    val-=2;
                }
            }
        }
        dx/=2; dy/=2;
    }
    return val;
}
int main()
{
    in>>cazuri;
    while(cazuri--)
    {
        in>>dx>>dy>>k>>Cx>>Cy;
        out<<det(dx, dy, k, Cx, Cy)<<"\n";
    }
    return 0;
}