이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int k,m,no[505];
int ex, ey;
int vx[505][101], vy[505][101];
long long dist(int x, int y, int xx, int yy){
int dx = abs(xx-x);
int dy = abs(yy-y);
dx = dx / (m+1) + dx % (m+1);
dy = dy / (m+1) + dy % (m+1);
return dx + dy + 2;
}
long long f(int pos, int ob){
if(pos == 1) return dist(vx[pos][ob],vy[pos][ob],ex,ey);
long long res = 1e13;
for (int i=0; i<no[pos-1]; i++) {
res = min(res,dist(vx[pos][ob],vy[pos][ob],vx[pos-1][i],vy[pos-1][i]) + f(pos-1,i));
}
return res;
}
int main(){
scanf("%d %d",&k,&m);
no[k] = 1;
scanf("%d %d %d %d",&vx[k][0],&vy[k][0],&ex,&ey);
for (int i=1; i<k; i++) {
scanf("%d",&no[i]);
for (int j=0; j<no[i]; j++) {
scanf("%d %d",&vx[i][j],&vy[i][j]);
}
}
long long res = f(k,0);
if(res >= 1e13 - 1) printf("-1");
else printf("%lld",res);
}
# | 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... |