デコの的腹筋Nowcoder

オリジナルタイトルリンク

タイトル説明

デコは最近、1日、彼は前に見たタイトル自身の腹筋を果たしたことを夢の中で想起し、愛のABSに落ちた:
長さnのシリーズを考えると、i番目の桁はaia_iaiあり、各数のために、あなたが選択することができます彼はいつでもプラス数dを、与えるためにそのようなΣiは= 2Nがあること| AI-AI-1 | \合計\ limits_ {I = 2} ^ n個| a_iを-A_ {I-1} | I =2Σn| 最小値| -ai-1を愛

しかし、デコは、彼がそれをしなかったことは非常にナイーブだった、そして今、彼は、あなたが彼を助けることができるコンピュータを取るしたくない携帯電話を再生し、ベッドに横たわっていましたか?

説明を入力します。

最初の行、二つの数字、N、D
第二行数n、i番目aia_iaiの代表

出力説明:

ライン、2NΣiは=を表す数は、| AI-AI-1 | \和の\ limits_ {I = 2} ^ N | a_iを-A_ {I-1} | iは=2Σn| -ai-を愛1 |最小

例1

エントリー

4 3
1 7 8 1

輸出

2

備考:

30%データの30%、30%、n≤105nの\の当量10 ^5n≤105ための
50%、50%、50%のためのデータ、N×は\倍D \d≤108n当量10 ^ 8N×d≤108を
100%に100%、100%のデータを、1当量\2≤n≤1072N \の当量10 ^72≤n≤107,1≤d≤100001\当量D \当量100001≤d≤10000,1≤ai≤1061\当量a_iを\ 当量10 ^61≤ai≤106

#include<cstdio>
#define int long long
using namespace std;
typedef long long ll;

inline void input(ll &x){
    ll ans=0,f=1;
    char c=getchar();
    while(c>'9'||c<'0'){
        if(c=='-')f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        ans=ans*10+c-48;
        c=getchar();
    }
    x=ans*f;
}

inline void output(ll x){
    if(x<0)x=-x,putchar('-');
    if(x>9)output(x/10);
    putchar(x%10+48);
}

inline void writeln(int x){
    output(x);
    putchar('\n');
}

inline int abs(int x){
    return x>0?x:-x;
}

inline int min(int a,int b){
    return a<b?a:b;
}

int n,d,x,last,ans;

signed main(){
    input(n);input(d);
    for(int i=1;i<=n;i++){
        input(x);
        x%=d;
        if(i!=1)ans+=min(abs(x-last),d-abs(x-last));
        last=x;
    }
    writeln(ans);
}

どちらの場合に分が含まれていることに注意してください

これまでのところ私は、コードの読み取り、最適化の奇妙なタイムアウトを追加しない理由を把握していません

そして、なぜ私のコードはオープンLONGLONG奇妙WAではありません

さて、私は(RPできませんでした

おすすめ

転載: www.cnblogs.com/Y15BeTa/p/11404519.html