Pagini recente » Cod sursa (job #3123017) | Cod sursa (job #1104822) | Cod sursa (job #2763706) | Cod sursa (job #2888194) | Cod sursa (job #2114981)
/*# include <fstream>
# define INF 1000000000
using namespace std;
ifstream fin("robotei.in");
ofstream fout("robotei.out");
struct ciclu{
int lungimeCiclu,distantaPunct;
}d[1010][1010],val;
int Marcat[1010][1010],n,m,x,y,modx,mody,offsetx,offsety,i,j;
int nexti(int i){
return (i*i+offsetx)%modx;
}
int nextj(int j){
return (j*j+offsety)%mody;
}
ciclu parcurg(int i,int j){
int ic=i,jc=j,ok=0,nr=0,cnt=0;
while(Marcat[ic][jc]==0){
Marcat[ic][jc]=1;
ic=nexti(ic);
jc=nextj(jc);
}
}
int main () {
fin>>n>>m>>x>>y>>modx>>mody>>offsetx>>offsety;
for(i=0;i<n;i++)
for(j=0;j<n;j++){
if((i>=modx&&j>=mody)||(i<modx&&j<mody&&Marcat[i][j]==0)){
nr++;
if(i>=modx&&j>=mody)
val=parcurge(i,j);
else
d[i][j]=parcurge(i,j);
}
if(i<mox&&j<mody)
val=d[i][j];
}
return 0;
}
ciclu parcurg(int i,int j){
ok=0;
nr=0;
while(ia!=ib||ja!=jb){
ia=nexti(ia);
ja=nextj(ja);
ib=nexti(nexti(ia));
jb=nextj(nextj(jb));
}
int ic=ia,jc=ja;
while(Marcat[ic][jc]==0){
Marcat[ic][jc]=nr;
ic=nexti(ic);
jc=nextj(jc);
if(ic==x&&jc==y)
ok=1;
nr++;
}
int cnt=0;
if(ok){
ic=x;
jc=y;
while(d[i][j].lungimeCiclu==0){
d[i][j].distantaPunct=(nr-cnt)%nr;
cnt++;
d[i][j].lungimeCiclu=nr;
ic=nexti(ic);
jc=nextj(jc);
}
}
else{
while(d[i][j].lungimeCiclu==0){
d[i][j].distantaPunct=INF;
d[i][j].lungimeCiclu=nr;
ic=nexti(ic);
jc=nextj(jc);
}
}
nr=0;
ic=i;
jc=j;
while(d[ic][jc].lungimeCiclu==0){
nr++;
ic=nexti(ic);
jc=nextj(jc);
}
cnt=d[ic][jc].distantaPunct;
int r=d[ic][jc].lungimeCiclu;
ic=i;
jc=j;
while(d[ic][jc].lungimeCiclu==0){
d[ic][jc].lungimeCiclu=r;
d[ic][jc]=nr+cnt;
nr--;
ic=nexti(ic);
jc=nextj(jc);
}
}
*/