Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- long long int A[100005];
- long long int B[100005];
- void sortA(int l, int r)
- {
- long long int pivot = A[(l + r) / 2];
- int i = l;
- int j = r;
- while (i <= j)
- {
- while (A[i] < pivot) i++;
- while (A[j] > pivot) j--;
- if (i <= j)
- {
- long long int tmpt = A[i];
- A[i] = A[j];
- A[j] = tmpt;
- i++; j--;
- }
- }
- if (l < j) sortA(l, j);
- if (r > i) sortA(i, r);
- }
- void sortB(int l, int r)
- {
- long long int pivot = B[(l + r) / 2];
- int i = l;
- int j = r;
- while (i <= j)
- {
- while (B[i] < pivot) i++;
- while (B[j] > pivot)j--;
- if (i <= j)
- {
- long long int tmpt = B[i];
- B[i] = B[j];
- B[j] = tmpt;
- i++; j--;
- }
- }
- if (l < j) sortB(l, j);
- if (r > i)sortB(i, r);
- }
- int main()
- {
- freopen("input.txt", "r", stdin);
- int n;
- cin >> n;
- for (int i = 0; i < n; i++)
- {
- cin >> A[i];
- }
- sortA(0, n - 1);
- B[0] = A[0];
- int index = 0;
- long long int sum = A[0], res = 0;
- for (int i = 1; i < n; i++)
- {
- if (B[index] == A[i])
- {
- sum += A[i];
- }
- else
- {
- B[index] = sum;
- B[++index] = sum = A[i];
- }
- }
- B[index] = sum;
- sortB(0, index);
- for (int i = 1; i <= index; i++)
- {
- res += B[i];
- }
- cout << res;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement