arc 093 C – Traveling Plan

时间:2023-03-09 19:31:52
arc 093 C – Traveling Plan

题意:

给出横坐标上一系列的点,一个人从0出发按照下标顺序访问每一个点,再回到0点。

问每次如果去掉一个点,那么访问的距离变为多少。

思路:

去掉这个点,那么就减去这个点到上一点到这一点的距离,减去这个点到下一个点的距离,加上上一个点到下一个点的距离。。。。

代码:

 #include <stdio.h>
#include <map>
using namespace std; const int N = 1e5 + ; int a[N];
int b[N]; map<int,int> mmp; int mabs(int x)
{
return x >= ? x : -x;
} int main()
{
int n; scanf("%d",&n); for (int i = ;i <= n;i++)
{
scanf("%d",&a[i]); mmp[a[i]]++;
} int ans = ; for (int i = ;i <= n+;i++)
{
ans += mabs(a[i] - a[i-]);
} for (int i = ;i <= n;i++)
{
int tmp = ans - mabs(a[i-] - a[i]) - mabs(a[i] - a[i+]) + mabs(a[i+] - a[i-]); printf("%d\n",tmp);
} return ;
}