NC21653. 巨型迷宫
描述
输入描述
第一行输入一个整数n,sx,sy,ex,ey表示行数与起点终点
第二行输入n个数表示每一行的数字
1<=n<=50, 1<=a[i]<=1000
0<=sx,ex<=n-1, 0<=sy,ey<=109
输出描述
输出一个整数
示例1
输入:
3 2 0 2 2 5 3 10
输出:
29
示例2
输入:
3 0 2 0 0 5 3 10
输出:
15
示例3
输入:
1 0 0 0 0 1
输出:
1
C++(clang++ 11.0.1) 解法, 执行用时: 2ms, 内存消耗: 488K, 提交时间: 2022-07-31 00:57:54
#include<bits/stdc++.h> #include<numeric> using namespace std; int main() { int n,i,j,sx,sy,ex,ey;long long a[55],aa=0,bb=0,count=1e13; cin>>n>>sx>>sy>>ex>>ey; for(i=0;i<n;i++) cin>>a[i]; for(i=0;i<n;i++) { for(j=min(i,sx);j<=max(i,sx);j++) aa+=a[j]; for(j=min(i,ex);j<=max(i,ex);j++) bb+=a[j]; if(sy!=ey) count=min(a[i]*(abs(sy-ey)-1)+aa+bb,count); else count=min(aa+bb-a[i],count); aa=0; bb=0; } cout<<count; return 0; }