CSES - Leirikisa 6.3.2017 - Results
Submission details
Task:Aitaus
Sender:ollpu
Submission time:2017-03-06 15:49:30 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.05 s1details
#30.04 s1details
#4ACCEPTED0.04 s1details
#5ACCEPTED0.05 s1details
#6ACCEPTED0.04 s2details
#7ACCEPTED0.04 s2details
#80.05 s2details
#90.06 s2details
#100.04 s2details
#11ACCEPTED0.09 s3details
#12ACCEPTED0.10 s3details
#130.12 s3details
#140.10 s3details
#150.13 s3details

Code

#include <iostream>
#include <algorithm>
using namespace std;
int t[101010];
long st[101010];
long sec(int a, int b, int c) {
  long l = st[a+c]-st[a-1], r = st[b]-st[a+c];
  return abs(l-r);
}
long h(int a, int b) {
  if (a == b) return 0;
  long result = st[b]-st[a-1];
  int m = 0;
  for (int jmp = (b-a+1)/2; jmp; jmp /= 2) {
    while (a+m+jmp < b && sec(a, b, m+jmp-1) > sec(a, b, m+jmp)) m += jmp;
  }
  return result + h(a, a+m) + h(a+m+1, b);
}
int main() {
  ios_base::sync_with_stdio();
  cin.tie(0);
  int n;
  cin >> n;
  long sum = 0;
  int tt[n];
  for (int i = 0; i < n; ++i) {
    cin >> tt[i];
  }
  sort(tt, tt+n);
  for (int i = 0; i < n; ++i) {
    sum += tt[i];
    t[i+1] = t[i];
    st[i+1] = sum;
  }
  cout << h(1, n) << endl;
}

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10
1 1 1 1 1 1 1 1 1 1

correct output
34

user output
34

Test 2

Group: 1

Verdict: ACCEPTED

input
10
1000 1000 1000 1000 1000 1000 ...

correct output
34000

user output
34000

Test 3

Group: 1

Verdict:

input
10
713 590 643 971 889 796 972 3 ...

correct output
18501

user output
18541

Test 4

Group: 1

Verdict: ACCEPTED

input
10
991 740 433 558 522 338 240 27...

correct output
15614

user output
15614

Test 5

Group: 1

Verdict: ACCEPTED

input
10
397 775 568 796 632 898 214 84...

correct output
20791

user output
20791

Test 6

Group: 2

Verdict: ACCEPTED

input
1000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
9976

user output
9976

Test 7

Group: 2

Verdict: ACCEPTED

input
1000
1000000000 1000000000 10000000...

correct output
9976000000000

user output
9976000000000

Test 8

Group: 2

Verdict:

input
1000
377480143 777745434 296992200 ...

correct output
4829974948360

user output
4843646255149

Test 9

Group: 2

Verdict:

input
1000
599885439 985529375 118284730 ...

correct output
4880180545408

user output
4892722850556

Test 10

Group: 2

Verdict:

input
1000
695015028 950574688 862418845 ...

correct output
5089402448969

user output
5103875924463

Test 11

Group: 3

Verdict: ACCEPTED

input
100000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
1668928

user output
1668928

Test 12

Group: 3

Verdict: ACCEPTED

input
100000
1000000000 1000000000 10000000...

correct output
1668928000000000

user output
1668928000000000

Test 13

Group: 3

Verdict:

input
100000
391395666 905124111 713186504 ...

correct output
818091245007558

user output
819516557579739

Test 14

Group: 3

Verdict:

input
100000
535008265 825579494 118746814 ...

correct output
819167891088786

user output
820600676389441

Test 15

Group: 3

Verdict:

input
100000
386356481 309596857 386341601 ...

correct output
816647450882063

user output
818068402892679