Лістинг програми
f1.c
int fibb(int mode)
{
static int f1, f2, f3;
if (mode==0) {
f3=f1+f2;
f1=f2;
f2=f3;
} else {
f1=0;
f2=1;
}
return (f1);
}
extern K;
int get_rand()
{
return fibb(0)%K;
}
f2.c
extern x, y, z, ro, xx, yy;
extern V, W, U, K, dl, dm, de, M0, M, E0, E;
int P() // Put
{
x=get_rand();
y=get_rand();
z=get_rand();
ro=get_rand();
// cur_m = x*y*z*ro;
return 0;
}
int C() // Centre
{
return 0;
}
int R() // Rotare Ox
{
xx=y;
yy=z;
y=yy;
z=xx;
}
int T() // Rotare Oy
{
xx=x;
yy=z;
x=yy;
z=xx;
}
int A() // Accept
{
E0-=de;
M0=M0 + ro*min(dl,x)*y*z - dm;
V-=min(dl,x)*y*z;
x-=min(dl,x);
}
int D() // Drop
{
x=0;
return 0;
}
f3.c
int x, y, z, ro, xx, yy;
int V, W, U, K, dl, dm, de, M0, M, E0, E;
int swap()
{
int t;
t = xx;
xx = yy;
yy = t;
}
int min(int x, int y)
{
return x<y ? x : y;
}
int get_x(int mode)
{
if (mode==-1) return 1000000000;
if (mode/3 == 0) return x;
if (mode/3 == 1) return y;
if (mode/3 == 2) return z;
}
int main()
{
// Initializing variables
V = 50;
W = 11;
U = 7;
K = 13;
dl = 1;
dm = 8;
de = 40;
M0 = 100;
M = 140;
E0 = 400;
E = 220;
// Workplace
fibb(1);
while (E0 > E && M0 < M && V!=0) {
P();
int minx;
minx = -1;
if (y<=W && z<=U && x<get_x(minx)) minx=0;
if (z<=W && y<=U && x<get_x(minx)) minx=1;
if (z<=W && x<=U && y<get_x(minx)) minx=2;
if (x<=W && z<=U && y<get_x(minx)) minx=3;
if (x<=W && y<=U && z<get_x(minx)) minx=4;
if (y<=W && x<=U && z<get_x(minx)) minx=5;
if (minx>0) {minx-=1; R();}
if (minx>1) {minx-=1; T();}
if (minx>2) {minx-=1; R();}
if (minx>3) {minx-=1; T();}
if (minx>4) {minx-=1; R();}
if (y<=W && z<=U) while (x*y*z*ro>0 && E0-de >= E && M0+(min(dl,x)*y*z*ro)-dm <= M && V-min(dl,x)*y*z>=0) A();
if (x>0) D();
}
// Returning
return 0;
}
01.11.2011