질문의 일반적인 종류의 재귀 해결해야
#INCLUDE <비트 / stdc ++. H> #DEFINE의 forn (I, n)에 대한이 (INT는 I = 0; I <INT (N); I ++) #DEFINE 이물 (난, S, T)에 대한 (INT I = S; I <(INT) t; I ++) 인터넷 제 #DEFINE 제 #DEFINE SE #DEFINE 전체 (X) x.begin () x.end () #DEFINE PF2의 (X, Y)의 printf ( "% D % D \ n", X, Y) #DEFINE PF (X)의 printf ( "가 % d \ n", X) 각 (X) (자동차는 : X)로 #define COUT을 << 그 << ENDL; #DEFINE PII 쌍 <INT, INT> 네임 스페이스를 사용하여 표준; 긴 LL 긴 형식 정의를; CONST INT maxn = 2e6 + (5); CONST INT MAXM 2E5 + = 5; INF = CONST INT 1E9; INT의 N, M, A [maxn]; LL ANS; 벡터 <INT> g [maxn]; () {int로 메인 CIN >> >> N m; 경우 (나는 <m; INT 나 0 = I ++) { CIN >> A [I]; 경우 (I) ANS + = ABS (a [I] -a [I-1]); } 경우 (나는 <m; INT I 1 = I ++) { g [A [I]와 push_back (a [I-1]).; . g [A [I-1]와 push_back (a [I]); } COUT << ANS << '; 위한 (INT 나 2 =; I <= N; I ++) { 대 (자동 X : g [I]) { if(x!=i-1 && x!=i) { if(x<i) ans-=i-x-1,ans+=x; else ans-=x-i,ans+=x-1; } } for(auto x:g[i-1]) { if(x!=i && x!=i-1) { if(x<i) ans-=x,ans+=i-x-1; else ans-=x-1,ans+=x-i; } } cout<<ans<<' '; } cout<<endl; }