CSES - Leirikisa 6.3.2017 - Results
Submission details
Task:Aitaus
Sender:JesseNiininen
Submission time:2017-03-06 16:46:36 +0200
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.03 s1details
#20.04 s1details
#30.03 s1details
#40.05 s1details
#50.04 s1details
#60.04 s2details
#70.03 s2details
#80.04 s2details
#90.04 s2details
#100.03 s2details
#110.69 s3details
#120.67 s3details
#130.68 s3details
#140.15 s3details
#150.17 s3details

Compiler report

input/code.cpp: In function 'void eiHyvinMee(std::vector<int>, int)':
input/code.cpp:8:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i = 0; i < v.size(); i++){
                               ^
input/code.cpp:12:39: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int j = i + 1; j < v.size(); j++){
                                       ^
input/code.cpp: In function 'int main()':
input/code.cpp:43:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for(int i = 0; i < v.size(); i++){
                                   ^

Code

#include <bits/stdc++.h>
using namespace std;

int cost;

void eiHyvinMee(vector<int> v, int l){
    int avg = l / v.size() * 2;
    for(int i = 0; i < v.size(); i++){
        int missing = avg - v[i];
        int index = -1;
        int smallestDiff = 10000000;
        for(int j = i + 1; j < v.size(); j++){
            int diff = abs(missing - v[j]);
            if(diff < smallestDiff){
                smallestDiff = diff;
                index = j;
            }
        }
        v[i] += v[index];
        v.erase(v.begin() + index);
        cost += v[i];
    }
}


int main()
{
    int n;
    cin >> n;

    vector<int> v(n);
    int l = 0;
    for(int i = 0; i < n; i++){
        cin >> v[i];
        l += v[i];
    }

    sort(v.begin(), v.end());

    int cost = 0;
    while(v.size() > 1){
        int avg = l / v.size() * 2;
        for(int i = 0; i < v.size(); i++){
            int num = v[i];
            int missing = avg - num;
            auto it = lower_bound(v.begin() + i + 1, v.end(), missing);
            if(it == v.end())
                it--;
            if(it != v.begin()){
                int diff1 = abs(missing - *it);
                int diff2 = abs(missing - *(it - 1));
                if(diff2 < diff1)
                    it--;
            }
            int num2 = *it;
            cout << num << " and " << num2 << "\n";
            v.erase(it);
            v[i] += num2;
            cost += v[i];
        }
        cout << "\n";
    }

    cout << cost;
}

Test details

Test 1

Group: 1

Verdict:

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

correct output
34

user output
1 and 1
1 and 1
1 and 1
1 and 1
1 and 1
...

Test 2

Group: 1

Verdict:

input
10
1000 1000 1000 1000 1000 1000 ...

correct output
34000

user output
1000 and 1000
1000 and 1000
1000 and 1000
1000 and 1000
1000 and 1000
...

Test 3

Group: 1

Verdict:

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

correct output
18501

user output
3 and 972
88 and 971
331 and 889
590 and 590
713 and 713
...

Test 4

Group: 1

Verdict:

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

correct output
15614

user output
240 and 740
272 and 558
336 and 522
338 and 433
424 and 424
...

Test 5

Group: 1

Verdict:

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

correct output
20791

user output
214 and 943
353 and 898
397 and 844
568 and 775
632 and 632
...

Test 6

Group: 2

Verdict:

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

correct output
9976

user output
1 and 1
1 and 1
1 and 1
1 and 1
1 and 1
...

Test 7

Group: 2

Verdict:

input
1000
1000000000 1000000000 10000000...

correct output
9976000000000

user output
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
...

Test 8

Group: 2

Verdict:

input
1000
377480143 777745434 296992200 ...

correct output
4829974948360

user output
1093115 and 1093115
2691555 and 2691555
2897198 and 2897198
5842554 and 5842554
6515665 and 6515665
...

Test 9

Group: 2

Verdict:

input
1000
599885439 985529375 118284730 ...

correct output
4880180545408

user output
1602539 and 1602539
1870607 and 1870607
3272325 and 3272325
4462364 and 4462364
8267316 and 8267316
...

Test 10

Group: 2

Verdict:

input
1000
695015028 950574688 862418845 ...

correct output
5089402448969

user output
311655 and 311655
4839833 and 4839833
5069706 and 5069706
5928432 and 5928432
6589208 and 6589208
...

Test 11

Group: 3

Verdict:

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

correct output
1668928

user output
1 and 1
1 and 1
1 and 1
1 and 1
1 and 1
...

Test 12

Group: 3

Verdict:

input
100000
1000000000 1000000000 10000000...

correct output
1668928000000000

user output
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
1000000000 and 1000000000
...

Test 13

Group: 3

Verdict:

input
100000
391395666 905124111 713186504 ...

correct output
818091245007558

user output
4854 and 31946
19224 and 19224
37450 and 37450
41576 and 41576
67105 and 67105
...

Test 14

Group: 3

Verdict:

input
100000
535008265 825579494 118746814 ...

correct output
819167891088786

user output
9888 and 999999861
20000 and 999995872
21682 and 999986239
24745 and 999981782
30463 and 999945516
...

Test 15

Group: 3

Verdict:

input
100000
386356481 309596857 386341601 ...

correct output
816647450882063

user output
2762 and 999990476
4176 and 999977601
14805 and 999966006
16235 and 999949898
23202 and 999947669
...