Little Petya likes to play very much. And most of all he likes to play the following game:
He is given a sequence of N integer numbers. At each step it is allowed to increase the value of any number by 1 or to decrease it by 1. The goal of the game is to make the sequence non-decreasing with the smallest number of steps. Petya is not good at math, so he asks for your help.
The sequence a is called non-decreasing if a1 ≤ a2 ≤ ... ≤ aN holds, where N is the length of the sequence.
The first line of the input contains single integer N (1 ≤ N ≤ 5000) — the length of the initial sequence. The following N lines contain one integer each — elements of the sequence. These numbers do not exceed 109 by absolute value.
Output one integer — minimum number of steps required to achieve the goal.
5
3 2 -1 2 11
4
5
2 1 1 1 1
1
codeforces链接
luogu链接
1 #include<cstdio> 2 #include<queue> 3 4 using namespace std; 5 6 template <typename tn> void read (tn & a) { 7 tn x = 0, f = 1; 8 char c = getchar(); 9 while (c < '0' || c > '9'){ if (c == '-') f = -1; c = getchar(); } 10 while (c >= '0' && c <= '9'){ x = x * 10 + c - '0'; c = getchar(); } 11 a = f == 1 ? x : -x; 12 } 13 14 const int MAXN = 5100; 15 long long n, ans; 16 priority_queue<long long> q; 17 18 int main() { 19 read(n); 20 ans = 0; 21 while (n--) { 22 int x; 23 read(x); 24 q.push(x); 25 if (q.top() > x) { 26 ans += q.top() - x; 27 q.pop(); 28 q.push(x); 29 } 30 } 31 printf("%lld\n", ans); 32 return 0; 33 }