알고리즘 경기 입문 클래식 금화

알고리즘 경기 입문 클래식 금화
/*
	Name:     
	Copyright:     
	Author: Analyst 
	Date: 28/02/14 00:31
	Description: dev-cpp 5.5.3
*/
#include <iostream>
#include <algorithm>
using namespace std;

const int maxn = 1000000+10;
long long A[maxn], C[maxn], tot, M;

int main()
{
	int n;
	
	while (scanf("%d", &n) == 1)        //     ,scanf() cin  
	{
		tot = 0;
		for (int i = 1; i <= n; ++i)
		{
			scanf ("%lld", &A[i]);      //%lld  long long 
			tot += A[i];
		}
		
		M = tot / n;
		C[0] = 0;
		for (int i = 1; i < n; ++i)
			C[i] = C[i-1] + A[i] - M;   //  C   
		sort(C, C+n);
		
		long long x1 = C[n/2], ans = 0; //x1    
		
		for (int i = 0; i < n; ++i)     //      
			ans += abs(x1-C[i]);
		
		printf("%lld
",ans); } return 0; }

ps:
주로 수축 의 무수 한 점 에서 어떤 점 까지 의 최 단 거리 로 추상 화 된다.(도입: 중위 개념)
동시에 전달 공식 을 이해 해 야 한다.
for (int i = 1; i < n; ++i) C[i] = C[i-1] + A[i] - M;   //푸 시 C 배열

좋은 웹페이지 즐겨찾기