CSES - COCI 2007/2008 #2 - Results
Submission details
Task:Kemija
Sender:henrikaalto
Submission time:2019-07-29 17:43:32 +0300
Language:C++ (C++17)
Status:READY
Result:0
Feedback
groupverdictscore
#10
Test results
testverdicttime
#1ACCEPTED0.01 sdetails
#2ACCEPTED0.01 sdetails
#3ACCEPTED0.01 sdetails
#40.01 sdetails
#5ACCEPTED0.01 sdetails
#6ACCEPTED0.01 sdetails
#70.01 sdetails
#8ACCEPTED0.01 sdetails
#9ACCEPTED0.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;
    while (!p[(it + 3) % n]) {
        p[(it + 3) % n] = 1;
        asd[(it + 3) % n] = asd[it] + dd[it];
        it += 3;
        it %= n;
    }
    for (int i = 0; i < n; ++i) if (!p[i]) {
        asd[i] = v[i]-asd[(i-1+n)%n]+asd[(i+1)%n];
    }
    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+2)%n] - v[(i + 1) % n];
        dd[i] = d[i];
        //printf("dd[%d] =%d\n", i, 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: ACCEPTED

input
7
8
4
8
10
...

correct output
1
2
1
5
4
...

user output
1
2
1
5
4
...

Test 4

Verdict:

input
9
6
10
11
13
...

correct output
1
3
6
2
5
...

user output
0
5726623074
-5726623062
1
5726623074
...

Test 5

Verdict: ACCEPTED

input
11
14
15
15
12
...

correct output
2
9
4
2
6
...

user output
2
9
4
2
6
...

Test 6

Verdict: ACCEPTED

input
43
49
43
27
20
...

correct output
17
20
6
1
13
...

user output
17
20
6
1
13
...
Truncated

Test 7

Verdict:

input
99
61
55
64
67
...

correct output
10
20
25
19
23
...

user output
0
5726623135
-5726623062
9
5726623136
...
Truncated

Test 8

Verdict: ACCEPTED

input
500
34234
24097
6848
24240
...

correct output
18019
5147
931
770
22539
...

user output
18019
5147
931
770
22539
...
Truncated

Test 9

Verdict: ACCEPTED

input
5002
257175927
192486676
334121373
435149455
...

correct output
146582420
29055198
16849058
288217117
130083280
...

user output
146582420
29055198
16849058
288217117
130083280
...
Truncated

Test 10

Verdict:

input
9999
352949139
551279904
517124120
806539504
...

correct output
239036611
37116744
275126549
204880827
326532128
...

user output
78578858
6153295120
-5591747926
44423074
6301880154
...
Truncated