CodeChef submission 149892 (C++ 4.0.0-8) plaintext list. Status: WA, problem K3, contest DEC09. By aashish_iitm (aashish_iitm), 2009-12-11 13:15:20.
#include<iostream> using namespace std; int main() { int test_cases,test_case=0; cin>>test_cases; while(test_case<test_cases) { int M,N; cin>>M>>N; int array[101][101]; int start_x,start_y; for(int i=0;i<=M;i++) for(int j=0;j<=N;j++) { char c; cin>>c; if(c=='0') array[i][j]=0; else if(c=='1') array[i][j]=1; else if(c=='2') array[i][j]=2; else if(c=='3') array[i][j]=3; else if(c=='4') array[i][j]=4; else if(c=='5') array[i][j]=5; else if(c=='6') array[i][j]=6; else if(c=='7') array[i][j]=7; else if(c=='8') array[i][j]=8; else if(c=='9') array[i][j]=9; else if(c=='.') array[i][j]=10; else if(c=='#') array[i][j]=11; else if(c=='*') array[i][j]=12; if(array[i][j] == 12) {start_x=i;start_y=j;} } //now lets create a array of positions int array1[11000][3]; int array2[11000][3]; int step_r[101][101]; for(int i=0;i<101;i++) for(int t=0;t<101;t++) step_r[i][t]=-1; array1[0][0]=start_x; array1[0][1] = start_y; array1[0][2] = 0; int fill = 1; int sum1=0,final; cin>>final; int steps=0; if(final==0) cout<<0<<endl; else { while(sum1!=final&&steps<100) { int fill1=0; /* for(int i=0;i<fill;i++) { // cout<<array1[i][0]<<" "<<array1[i][1]<<" "<<array1[i][2]<<endl; // cout<<steps<<endl; // cin>>fill1; }*/ for(int i=0;i<fill;i++) { int u1,u2; u1=1;u2=0; if(array1[i][0]+u1<=M&&array1[i][1]+u2<=N&&array1[i][0]+u1>=0&&array1[i][1]+u2>=0) if(array[array1[i][0]+u1][array1[i][1]+u2]!=11) { { array2[fill1][0] = array1[i][0]+u1; array2[fill1][1] = array1[i][1]+u2; if(array[array1[i][0]+u1][array1[i][1]+u2]<=9&&array[array1[i][0]+u1][array1[i][1]+u2]>=0) array2[fill1][2] = array1[i][2]+array[array1[i][0]+u1][array1[i][1]+u2]; else array2[fill1][2] = array1[i][2]; fill1++; } } u1=0;u2=1; if(array1[i][0]+u1<=M&&array1[i][1]+u2<=N&&array1[i][0]+u1>=0&&array1[i][1]+u2>=0) if(array[array1[i][0]+u1][array1[i][1]+u2]!=11) { { array2[fill1][0] = array1[i][0]+u1; array2[fill1][1] = array1[i][1]+u2; if(array[array1[i][0]+u1][array1[i][1]+u2]<=9&&array[array1[i][0]+u1][array1[i][1]+u2]>=0) array2[fill1][2] = array1[i][2]+array[array1[i][0]+u1][array1[i][1]+u2]; else array2[fill1][2] = array1[i][2]; fill1++; } } u1=-1;u2=0; if(array1[i][0]+u1<=M&&array1[i][1]+u2<=N&&array1[i][0]+u1>=0&&array1[i][1]+u2>=0) if(array[array1[i][0]+u1][array1[i][1]+u2]!=11) { { array2[fill1][0] = array1[i][0]+u1; array2[fill1][1] = array1[i][1]+u2; if(array[array1[i][0]+u1][array1[i][1]+u2]<=9&&array[array1[i][0]+u1][array1[i][1]+u2]>=0) array2[fill1][2] = array1[i][2]+array[array1[i][0]+u1][array1[i][1]+u2]; else array2[fill1][2] = array1[i][2]; fill1++; } } u1=0;u2=-1; if(array1[i][0]+u1<=M&&array1[i][1]+u2<=N&&array1[i][0]+u1>=0&&array1[i][1]+u2>=0) if(array[array1[i][0]+u1][array1[i][1]+u2]!=11) { { array2[fill1][0] = array1[i][0]+u1; array2[fill1][1] = array1[i][1]+u2; if(array[array1[i][0]+u1][array1[i][1]+u2]<=9&&array[array1[i][0]+u1][array1[i][1]+u2]>=0) array2[fill1][2] = array1[i][2]+array[array1[i][0]+u1][array1[i][1]+u2]; else array2[fill1][2] = array1[i][2]; fill1++; } } } int yup=0; /* for(int i=0;i<fill1;i++) { cout<<"aLL "<<array2[i][0]<<" "<<array2[i][1]<<" "<<array2[i][2]<<endl; cout<<steps<<endl; cin>>yup; } */ /* for(int i=0;i<4;i++) {for(int k=0;k<4;k++) cout<<step_r[i][k]<<" "; cout<<endl;} */ yup=0; int crap; // cin>>crap; for(int i=0;i<fill1;i++){ // cout<<"aLL "<<array2[i][0]<<" "<<array2[i][1]<<" "<<array2[i][2]<<" "<<step_r[array2[i][0]][array2[i][1]]<<endl; // cin>>crap; if(step_r[array2[i][0]][array2[i][1]]==-1){ // cout<<"pass "<<array2[i][0]<<" "<<array2[i][1]<<" "<<array2[i][2]<<endl; // cin>>crap; array1[yup][0]=array2[i][0]; array1[yup][1]=array2[i][1]; array1[yup][2]=array2[i][2]; step_r[array2[i][0]][array2[i][1]] = array2[i][2];yup++;} else if(step_r[array2[i][0]][array2[i][1]]<array2[i][2]){ array1[yup][0]=array2[i][0]; array1[yup][1]=array2[i][1]; array1[yup][2]=array2[i][2]; step_r[array2[i][0]][array2[i][1]] = array2[i][2];yup++;} /* else if(step_r[array2[i][0]][array2[i][1]]>array2[i][2]){ array1[i][0]=array2[i][0]; array1[i][1]=array2[i][1]; array1[i][2]=array2[i][2]; step_r[array2[i][0]][array2[i][1]] = array2[i][2];yup++;} */ // cout<<steps<<"asdgdasdg"<<endl; // cout<<array2[i][0]<<" "<<array2[i][1]<<" "<<array2[i][2]<<endl; // cin>>yup; } fill=yup; /* for(int i=0;i<fill;i++) { cout<<"saved "<<array1[i][0]<<" "<<array1[i][1]<<" "<<array1[i][2]<<endl; cout<<steps<<endl; cin>>yup; }*/ steps++; sum1=0; for(int i=0;i<yup;i++) if(array1[i][2]==final) sum1 = array1[i][2]; } if(steps<100) cout<<steps<<endl; else cout<<-1<<endl; // cout<<"asdfadf"<<endl; // cin>>fill; } test_case++; } return 0; }
Comments

