# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
7359 | netsion | 배열 탈출 (GA8_array) | C++98 | 2000 ms | 55564 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |