Cod sursa(job #874478)

Utilizator Master011Dragos Martac Master011 Data 8 februarie 2013 16:03:26
Problema Barbar Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<cstdio>
#define MM 1010
using namespace std;

const int dl[]={-1,0,1,0};
const int dc[]={0,1,0,-1};

int mat[MM][MM],R,C,drag[MM][MM],nrdrg,inc,sf;

struct element{
    int y;
    int x;
}

element c[MM*7],start,stop;

void bordare(){
    for(int i=0;i<=C+1;i++){
        mat[0][i]=-1;
        mat[R+1][i]=-1;
    }

    for(int j=0;j<=R+1;j++){
        mat[i][0]=-1;
        mat[i][C+1]=-1;
    }
    return;
}

void push (element P){
    c[sf++]=P;
    if(sf==MM*7)
        sf=0;
    return;
}

int empty(){
    return inc==sf;
}

element pop{
    element Q;
    Q=c[inc++];
    if(inc==DIM)
        inc=0;
    return Q;

}

void leed(){
    element P,Q;
    for(int i=1;i<=nrdrg;i++){
        P.y=drag[i].y;
        P.x=drag[i].x;
        push(P);
    }
    while(empty()){
        P=pop();

    }
}

int main(){
    FILE *in=fopen("barbar.in","r"),*out=fopen("barbar.out","w");
    fscanf(in,"%d%d",&R,&C);
    bordare();
    char s[MM];
    int x;
    for(int i=1;i<=R;i++){
        fgets(s,MM,in);
        x=0;
        while((s[x]!='\n')&&(s[x]!='\0')&&(s[x]!=EOF)){
            if(s[x]=='*')
                mat[i][x+1]=-1;
            if(s[x]=='I'){
                start.y=i;
                start.x=x+1;
            }
            if(s[x]=='D'){
                mat[i][x+1]=-2;
                drag[++nrdrg].y=i;
                drag[nrdrg].x=x+1;
            }
            if(s[x]=='0'){
                stop.y=i;
                stop.x=x+1;
            }
        }
    }
    leed();
}