cf1234E

 

 

질문의 일반적인 종류의 재귀 해결해야

#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;
}

  

 

추천

출처www.cnblogs.com/033000-/p/12380820.html