C. Ryouko's Memory Note

来源:互联网 发布:直播网络公会 编辑:程序博客网 时间:2024/05/22 10:42
#include <iostream>
#include <stdio.h>
#include <vector>
#include <cmath>
#include <string.h>
#include <algorithm>


using namespace std;
vector <int> num[100005];


int main()
{
    int n,m;
    scanf("%d %d",&n, &m);


    long long int sum = 0;
    long long int p,q;


    scanf("%lld",&p);
    for( int i = 1; i<m; i++)
    {
        scanf("%lld",&q);
        sum += (long long int)fabs(q-p);


        if(q!=p)
        {
            num[p].push_back(q);
            num[q].push_back(p);
        }
        p = q;
    }
    long long int maxn = 0;
    long long int temp = 0;
    long long int ans = 0;
    for( int i = 1 ; i <= n ;i++)
    {
        if(!num[i].size())
         continue;
            ans = 0;
            sort(num[i].begin(), num[i].end());
            temp = num[i][num[i].size()/2];


            for( int j = 0; j< num[i].size();j++)
            {
                ans += (long long int )fabs(num[i][j] - i) - (long long int)fabs(num[i][j] - temp);
            }


         maxn = max(maxn,ans);
    }

    printf("%lld\n",sum - maxn);}

// 傻呵呵的把输出的时候的sum-maxn写成sum-ans竟然改了一遍遍的没注意到

0 0