Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ALGO_IT(A,i,j,x)
- STI=STJ=STY=STRET=STX=LAST=NIL
- CI=I; CJ=J;
- while(CJ-CI >= 0 || STJ != NIL)do
- if(CJ-CI >=0)then
- if(CJ-CI>=1)then
- y=RAND()%2
- if(x=1)then
- STY,STI,STX=PUSH(Y,CI,X);
- CI=(CI+CJ)/2 + 1
- X=Y
- else
- STY,STJ,STX=PUSH(Y,CJ,X);
- else
- RET=A[CI]
- LAST=CJ
- CI=CJ+1
- else
- TOP(STY,STJ,STI,STX);
- if(x=1)then
- ret=val
- if(ret%2=0)then
- CJ=(CI+CJ)/2
- X=1-Y
- else
- POP(STY,STJ,STI,STX);
- LAST=CJ
- CI=CJ+1
- else
- ret=val
- if(ret%2=1)then
- CI=(CI+CJ)/2 + 1
- X=1-Y
- else
- POP(STY,STJ,STI,STX);
- LAST=CJ
- CI=CJ+1
- STRET=PUSH(STRET,RET)
- if(Last!=(CI+CJ)/2)then
- top(STRET)
- if(ret%2=0)then
- pop(STRET)
- ret=ret+val
- push(STRET,RET)
- POP(STY,STJ,STI,STX); //USCITA
- LAST=CJ
- CI=CJ+1
- else
- top(STRET)
- if(ret%2=1)then
- pop(STRET)
- ret=ret+val
- push(STRET,RET)
- POP(STY,STJ,STI,STX); //USCITA
- LAST=CJ
- CI=CJ+1
- else
- POP(STY,STJ,STI,STX); //USCITA
- LAST=CJ
- CI=CJ+1
- return ret
Add Comment
Please, Sign In to add comment