Cod sursa(job #2114981)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 26 ianuarie 2018 09:55:09
Problema Robotei Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.24 kb
/*# 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);
    }
}
*/