Pagini recente »
Cod sursă (job #442722)
|
Borderou de evaluare (job #73485)
|
Cod sursă (job #440571)
|
Cod sursă (job #711073)
|
Cod sursă (job #525427)
Cod sursă (job
#525427)
#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;
}