제출 #7359

#제출 시각아이디문제언어결과실행 시간메모리
7359netsion배열 탈출 (GA8_array)C++98
6 / 100
2000 ms55564 KiB
#include <stdio.h> int data[2224][2224]; /** 입력배열 **/ struct m1 /** main **/ { unsigned int n; int x; int y; unsigned int money; } m[1000000]; struct s1 /** sub **/ { unsigned int n; int x; int y; unsigned int money; int type; } s[1000000]; int main() { /* FILE *in=fopen("input.txt","r"); FILE *out=fopen("output.txt","w"); */ int i,j,n,mcnt=0,scnt=0; unsigned int min=99999999; int c=0,c1=0; scanf("%d\n",&n); for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { scanf("%d ",&data[i][j]); } } mcnt=1; m[0].x=1; m[0].y=1; m[0].n=data[1][1]; do { scnt=0; for(i=0; i<mcnt; i++) { /** 조건 4 **/ if(m[i].x==n && m[i].y==n) { if(m[i].money<min) min=m[i].money; continue; } /** 조건 1 **/ if(m[i].x<n && m[i].y<n) { if(m[i].y!=n) { if(m[i].n>data[m[i].x][m[i].y+1]) { s[scnt].x=m[i].x; s[scnt].y=m[i].y+1; s[scnt].n=data[m[i].x][m[i].y+1]; s[scnt].money=m[i].money; s[scnt].type=0; scnt++; } else { s[scnt].x=m[i].x; s[scnt].y=m[i].y; s[scnt].n=m[i].n+1; s[scnt].money=m[i].money+1; s[scnt].type=1; scnt++; } } if(m[i].x!=n) { if(m[i].n>data[m[i].x+1][m[i].y]) { s[scnt].x=m[i].x+1; s[scnt].y=m[i].y; s[scnt].n=data[m[i].x+1][m[i].y]; s[scnt].money=m[i].money; s[scnt].type=0; scnt++; } else { s[scnt].x=m[i].x; s[scnt].y=m[i].y; s[scnt].n=m[i].n+1; s[scnt].money=m[i].money+1; s[scnt].type=1; scnt++; } } } else if(m[i].x==n && m[i].y<n) /**조건 2 **/ { if(m[i].y!=n) { if(m[i].n>data[m[i].x][m[i].y+1]) { s[scnt].x=m[i].x; s[scnt].y=m[i].y+1; s[scnt].n=data[m[i].x][m[i].y+1]; s[scnt].money=m[i].money; s[scnt].type=0; scnt++; } else { s[scnt].x=m[i].x; s[scnt].y=m[i].y; s[scnt].n=m[i].n+1; s[scnt].money=m[i].money+1; s[scnt].type=1; scnt++; } } } else /** 조건 3 **/ { if(m[i].x!=n) { if(m[i].n>data[m[i].x+1][m[i].y]) { s[scnt].x=m[i].x+1; s[scnt].y=m[i].y; s[scnt].n=data[m[i].x+1][m[i].y]; s[scnt].money=m[i].money; s[scnt].type=0; scnt++; } else { s[scnt].x=m[i].x; s[scnt].y=m[i].y; s[scnt].n=m[i].n+1; s[scnt].money=m[i].money+1; s[scnt].type=1; scnt++; } } } } if(scnt==0) break; mcnt=0; for(i=0; i<scnt; i++) { c=0; for(j=0; j<i; j++) { if(s[j].x==s[i].x && s[j].y==s[i].y && s[j].money<=s[i].money) { c=1; break; } } if(c==0 && s[i].type==0) { m[mcnt].x=s[i].x; m[mcnt].y=s[i].y; m[mcnt].n=data[s[i].x][s[i].y]; m[mcnt].money=s[i].money; mcnt++; } else if(c==0 && s[i].type==1) { m[mcnt].x=s[i].x; m[mcnt].y=s[i].y; m[mcnt].n=s[i].n; m[mcnt].money=s[i].money; mcnt++; } } } while(1); printf("%d",min); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...