Task: | Kasat |
Sender: | |
Submission time: | 2015-09-11 22:04:13 +0300 |
Language: | C++ |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 21 |
#2 | ACCEPTED | 33 |
#3 | ACCEPTED | 46 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.05 s | 1 | details |
#2 | ACCEPTED | 0.05 s | 2 | details |
#3 | ACCEPTED | 0.05 s | 3 | details |
Code
#include <algorithm> #include <iostream> #include <vector> int main(){ int t;std::cin>>t; for(int a,b,c,n;std::cin>>a>>b>>c>>n;){ std::vector<int>X{a,b,c}; while(n){ std::sort(X.begin(),X.end()); if(n<10)--X[2],++X[0],--n; else if(X[2]-X[0]>1){ if(X[0]==X[1]){ int d=std::min((X[2]-X[1]+2)/3,n); n-=d; X[0]+=d/2; X[1]+=(d+1)/2; X[2]-=d; } else if(X[1]==X[2]){ int d=X[1]-X[0]==2?1:(X[1]-X[0]+2)/2; d=std::min(d,n); n-=d; X[0]+=d; X[1]-=d/2; X[2]-=(d+1)/2; } else{ int d=std::min(std::min(X[1]-X[0],X[2]-X[1]),n); n-=d; X[0]+=d; X[2]-=d; } } else if(X[0]==X[2])n%=2; else n=0; } std::sort(X.begin(),X.end()); std::cout<<X[0]<<' '<<X[1]<<' '<<X[2]<<'\n'; } }
Test details
Test 1
Group: 1
Verdict: ACCEPTED
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 |
---|
46 47 47 24 24 24 45 45 46 43 46 94 32 32 33 ... |
Test 2
Group: 2
Verdict: ACCEPTED
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 54 54 55 54 55 55 63 63 64 36 37 38 ... |
Test 3
Group: 3
Verdict: ACCEPTED
input |
---|
1000 211358104 753479603 549127067 ... |
correct output |
---|
504654924 504654925 504654925 589019272 589019272 589019273 101309993 101309994 101309994 436205296 436205297 436205298 351062567 351062568 351062568 ... |
user output |
---|
504654924 504654925 504654925 589019272 589019272 589019273 101309993 101309994 101309994 436205296 436205297 436205298 351062567 351062568 351062568 ... |