比赛 EYOI与SBOI开学欢乐赛1st 评测结果 AAAAAAAAAA
题目名称 拖拉机 最终得分 100
用户昵称 JasonW6 运行时间 0.245 s
代码语言 C++ 内存使用 13.44 MiB
提交时间 2022-08-29 20:06:55
显示代码纯文本
#include<iostream>
#include<cmath>
using namespace std;
int n,x,y,xt,yt;
int a[1005][1005],b[1005][1005];
int main(){
    freopen("tractor.in","r",stdin);
    freopen("tractor.out","w",stdout);
    cin>>n>>xt>>yt;
    a[xt][yt]=50005; 
    b[xt][yt]=50005; 
    for(int i=0;i<n;i++){
        cin>>x>>y;
        a[x][y]=50010;
        b[x][y]=50010;
    }
    for(int i=0;i<1003;i++){
        if(a[0][i]==50010) a[0][i]++;
        if(a[i][0]==50010) a[i][0]++;
    }
    for(int i=1;i<1003;i++){
        for(int j=1;j<1003;j++){
            if(a[i][j]==50010) a[i][j]=min(a[i-1][j],a[i][j-1])+1;
            else a[i][j]=min(a[i-1][j],a[i][j-1]);
        }
    }
    for(int i=1002;i>=0;i--){
        for(int j=1002;j>=0;j--){
            if(b[i][j]==50010) b[i][j]=min(b[i+1][j],b[i][j+1])+1;
            else b[i][j]=min(b[i+1][j],b[i][j+1]);
        }
    }
    for(int i=1;i<1003;i++){
        for(int j=1;j<1003;j++){
            a[i][j]=min(a[i][j],b[i][j]);
        }
    }
    cout<<a[xt][yt];
//    for(int i=0;i<10;i++){
//        for(int j=0;j<10;j++){
//            cout<<a[i][j]<<' ';
//        }
//        cout<<endl;
//    }
    return 0;
}