CSES - Putka Open 2015 – 3/6 - Results
Submission details
Task:Kasat
Sender:
Submission time:2015-09-12 12:48:51 +0300
Language:C++
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#10.05 s1details
#20.05 s2details
#30.05 s3details

Code

#include <bits/stdc++.h>

#define _ ios_base::sync_with_stdio(0);cin.tie();
#define mp make_pair
#define pb push_back

#define ll long long
#define pii pair<int,int>
#define vpii vector<pii>
#define vi vector<int>

#define EPS 2.220446e-02
#define PI 3.14159265358

using namespace std;

bool compare(const pii&a, const pii&b) {
    return a.second>b.second;
}

int main() { _

    vector<tuple<int,int,int,int>> qs;
    int t; cin >> t;
    for(int i=0;i<t;i++) {
        int a,b,c,n;
        cin >> a >> b >> c >> n;
        qs.push_back(make_tuple(a,b,c,n));
    }

    for(auto x : qs) {
        int a = get<0>(x),b = get<1>(x),c = get<2>(x),n = get<3>(x);
        vector<int> arr = {a,b,c};
        sort(arr.begin(), arr.end());
        a=arr[0];b=arr[1];c=arr[2];
        if(a!=b) {
            int trm = b-a;
            if(trm>n) { trm = n; }
            a += trm;
            c -= trm;
            n -= trm;
        } // (A == B) <= C
        if(n>0) {
            if(a==b&&b==c) {
                if(a==0) {
                    cout << "0 0 0" << endl;
                    continue;
                }
                if(n%2==0) {
                    cout << a << " " << a << " " << a << endl;
                    continue;
                } else {
                    cout << a-1 << " " << a << " " << a+1 << endl;
                    continue;
                }
            } else {
                // a == b
                int canrm = c-b;
                if(n==canrm-1) {
                    int bit=canrm%3;
                    int each=(canrm-bit)/3;
                    cout << a+each << " " << a+each << " " << a+each+bit << endl;
                    continue;
                }
                if(n<canrm-1) {
                    int bit=n%2;
                    int each=(n-bit)/2;
                    cout << a+each << " " << a+each+bit << " " << c-n << endl;
                    continue;
                }
                if(n>canrm-1) {
                    if(canrm%3==0) {
                        if(n%2==0) {
                            int each = canrm/3;
                            cout << (a+each) << " " << (a+each) << " " << (a+each) << endl;
                        } else {
                            int each = canrm/3;
                            cout << a+each-1 << " " << a+each << " " << a+each+1 << endl;
                        }
                        continue;
                    }
                    if(canrm%3==1) {
                        int each = (canrm-1)/3;
                        cout << a+each << " " << a+each << " " << a+each+1 << endl;
                        continue;
                    }
                    if(canrm%3==2) {
                        int each = (canrm-2)/3;
                        cout << a+each << " " << a+each+1 << " " << a+each+1 << endl;
                        continue;
                    }
                }
            }
        } else {
            cout << a << " " << b << " " << c << endl;
            continue;
        }
    }

    return 0;
}

Test details

Test 1

Group: 1

Verdict:

input
1000
7 69 64 45
37 5 30 81
50 49 37 38
46 37 100 6
...

correct output
46 47 47
24 24 24
45 45 46
43 46 94
32 32 33
...

user output
52 64 24
24 24 24
43 46 94
27 28 29
42 43 84
...

Test 2

Group: 2

Verdict:

input
1000
19 13 88 978977859
67 57 39 960003440
81 16 67 971611942
92 96 2 957979201
...

correct output
39 40 41
54 54 55
54 55 55
63 63 64
36 37 38
...

user output
39 40 41
37 37 37
41 42 43
46 47 47
42 43 43
...

Test 3

Group: 3

Verdict:

input
1000
211358104 753479603 549127067 ...

correct output
504654924 504654925 504654925
589019272 589019272 589019273
101309993 101309994 101309994
436205296 436205297 436205298
351062567 351062568 351062568
...

user output
436205296 436205297 436205298
459102022 459102023 459102024
51930665 51930665 51930666
271246782 271246783 271246784
273408319 273408319 273408320
...