CSES - COCI 2007/2008 #2 - Results
Submission details
Task:Kemija
Sender:henrikaalto
Submission time:2019-07-29 17:01:16 +0300
Language:C++17
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#30.01 sdetails
#40.01 sdetails
#50.01 sdetails
#60.01 sdetails
#70.01 sdetails
#80.01 sdetails
#90.01 sdetails
#100.02 sdetails

Code

#include<bits/stdc++.h>
using namespace std;
#define all(x) x.begin(), x.end()
using ii=long long;

vector<int> v,d;

int p[10100];
ii asd[10100];
ii dd[10100];
int n;

ii haku(ii x)
{
    fill(p, p + n, 0);
    asd[0] = x;
    p[0] = 1;
    int it = 0;
    if (n & 1) {
        while (!p[(it + 2) % n]) {
            p[(it + 2) % n] = 1;
            asd[(it + 2) % n] = asd[it] + dd[it];
            it += 2;
            it %= n;
        }
    }
    else {
        while (!p[(it + 1) % n]) {
            p[(it + 1) % n] = 1;
            asd[(it + 1) % n] = asd[it] + dd[it];
            ++it;
        }
    }
    ii s = 0;
    for (int i = 0; i < n; ++i) {
        s += asd[i];
    }
    return s;
}


int main()
{
    cin >> n;
    v=vector<int>(n);
    ii s = 0;
    for (int i = 0; i < n; ++i) {
        cin >> v[i];
        s += v[i];
    }
    assert(s % 3 == 0);
    s /= 3;
    if (n == 3) {
        cout << 1 << " " << 1 << " " << s - 2 << "\n";
        return 0;
    }
    d=vector<int>(n);
    for (int i = 0; i < n; ++i) {
        d[i] = v[i] - v[(i + 1) % n];
        dd[(i + 2) % n] = d[i];
        //printf("dd[%d] =%d\n", (i+2)%n, d[i]);
    }
    ii b = 0;
    for (ii z = (1l << 32); z; z /= 2) {
        if (haku(b + z) <= s) b += z;
    }
    haku(b);
    for (int i = 0; i < n; ++i) {
        cout << asd[i] << "\n";
    }
}

Test details

Test 1

Verdict: ACCEPTED

input
3
53
53
53

correct output
1
1
51

user output
1 1 51

Test 2

Verdict: ACCEPTED

input
5
8
9
12
9
...

correct output
1
5
3
4
2

user output
1
5
3
4
2

Test 3

Verdict:

input
7
8
4
8
10
...

correct output
1
2
1
5
4
...

user output
0
5
3
7
7
...

Test 4

Verdict:

input
9
6
10
11
13
...

correct output
1
3
6
2
5
...

user output
6
3
7
1
3
...

Test 5

Verdict:

input
11
14
15
15
12
...

correct output
2
9
4
2
6
...

user output
0
15
11
9
10
...

Test 6

Verdict:

input
43
49
43
27
20
...

correct output
17
20
6
1
13
...

user output
0
41
-12
38
-6
...

Test 7

Verdict:

input
99
61
55
64
67
...

correct output
10
20
25
19
23
...

user output
0
38
20
30
26
...

Test 8

Verdict:

input
500
34234
24097
6848
24240
...

correct output
18019
5147
931
770
22539
...

user output
5833
11667
28227
38364
55613
...

Test 9

Verdict:

input
5002
257175927
192486676
334121373
435149455
...

correct output
146582420
29055198
16849058
288217117
130083280
...

user output
184249651
278248797
379216952
443906203
302271506
...

Test 10

Verdict:

input
9999
352949139
551279904
517124120
806539504
...

correct output
239036611
37116744
275126549
204880827
326532128
...

user output
8589934591
-18571748429
8619183296
-18408057895
8420852531
...