Pagini recente » Cod sursa (job #1043459) | Cod sursa (job #2143655) | Cod sursa (job #2901792) | Cod sursa (job #1550524) | Cod sursa (job #36841)
Cod sursa(job #36841)
#include<stdio.h>
#define Lmax 2000002
long hold[Lmax],hols[Lmax];
int main()
{
long i,cnt,nr,N,L,M,M1,R,nrd=0;
int dir;
long long X,Y,Z,V,timp,pozant,poz;
freopen("toys.in","r",stdin);
freopen("toys.out","w",stdout);
scanf("%ld%ld%ld",&N,&L,&M);
scanf("%lld%lld%lld%lld%lld",&pozant,&X,&Y,&Z,&V);
hols[pozant]=1;
for(i=2;i<=N;i++)
{
poz=( X * pozant + Y * (i-1) ) % ( L-1 ) +1 ;
dir=( Z * pozant + V * (i-1) ) % 2;
if( dir == 0 )
hold[ poz ] ++;
else
hols[ poz ] ++;
if( !dir ) nrd ++;
pozant=poz;
}
if( M % N == 0 )
{
for( i=L;i;i--)
if( hols[i] )
break;
timp= M/N*2*L+ i;
}
else
{
M1=(M/N)*N;
R=M-M1;
if( R <= nrd )
{
nr= nrd-R+1;
cnt=0;
for(i=1;i<=L&&cnt<nr;i++)
if( hold[i]) cnt+= hold[i];
timp=M1/N*2*L+L+(L-i+1);
}
else
{
R-=nrd;
cnt=0;
for(i=1;i<=L&&cnt<R;i++)
if( hols[i] ) cnt += hols[i];
timp=M1/N*2*L+L+L+i-1;
}
}
printf("%lld\n",timp);
return 0;
}