Submission details
Task:Rain Fall
Sender:OOliOO_slayer
Submission time:2016-10-04 17:31:39 +0300
Language:C++
Status:READY
Result:ACCEPTED
Test results
testverdicttime
#1ACCEPTED0.04 sdetails
#2ACCEPTED0.05 sdetails
#3ACCEPTED0.02 sdetails
#4ACCEPTED0.04 sdetails
#5ACCEPTED0.05 sdetails
#6ACCEPTED0.05 sdetails
#7ACCEPTED0.03 sdetails
#8ACCEPTED0.05 sdetails
#9ACCEPTED0.04 sdetails
#10ACCEPTED0.04 sdetails
#11ACCEPTED0.04 sdetails
#12ACCEPTED0.05 sdetails
#13ACCEPTED0.04 sdetails
#14ACCEPTED0.05 sdetails
#15ACCEPTED0.04 sdetails
#16ACCEPTED0.04 sdetails
#17ACCEPTED0.05 sdetails
#18ACCEPTED0.03 sdetails
#19ACCEPTED0.05 sdetails
#20ACCEPTED0.04 sdetails
#21ACCEPTED0.04 sdetails
#22ACCEPTED0.05 sdetails
#23ACCEPTED0.04 sdetails
#24ACCEPTED0.05 sdetails
#25ACCEPTED0.03 sdetails
#26ACCEPTED0.06 sdetails
#27ACCEPTED0.04 sdetails
#28ACCEPTED0.06 sdetails
#29ACCEPTED0.04 sdetails
#30ACCEPTED0.06 sdetails
#31ACCEPTED0.04 sdetails
#32ACCEPTED0.04 sdetails
#33ACCEPTED0.03 sdetails
#34ACCEPTED0.03 sdetails
#35ACCEPTED0.04 sdetails
#36ACCEPTED0.04 sdetails

Code

#include <stdio.h> // include before iostream for faster scanf
#include <iostream>
#include <vector>
#include <string>
#include <map>
#include <unordered_map>
#include <algorithm>
#include <utility>
#include <set>
#include <unordered_set>
#include <cmath>
#include <math.h>
#include <queue>
#include <stdlib.h>
#include <string.h>
#include <sstream>
#include <tuple>
#include <utility>
#include <iomanip>
#include <iterator>

using namespace std;
typedef long long LL;

#define printv(printVec) for (auto printVecIter : (printVec)) cout << printVecIter << " "; cout << endl;

// g++-4.8 -Wall -Wshadow -std=c++11 a.cpp && ./a.out

double test(double l, double k, double t1, double t2, double h, double pour) {
	double totpour = pour*t1;
	double rem;
	if (totpour > l) {
		double timetofill = l/pour;
		double restrain = t1 - timetofill;
		rem = timetofill*pour + restrain*max(pour - k, (double)0);
	} else {
		rem = totpour;
	}
	if (rem > l) {
		rem = max(l, rem - k*t2);
	}
	return rem;
}


int main() {
	std::ios::sync_with_stdio(false);cin.tie(0);
	double l, k, t1, t2, h;
	cin >> l>>k>>t1>>t2>>h;
//cout << test(l,k,t1,t2,h,10);
//return 0;
	double ansmn = 0;
	double acc = 10000;
	for (int i = 0; i < 100; i++) {
		double pour = ansmn + acc;
		double tot = test(l,k,t1,t2,h,pour);
		if (tot < h) ansmn += acc;
		acc /= 2;
	}
	double ansmx = 1000000;
	acc = 1000000;
	for (int i = 0; i < 100; i++) {
		double pour = ansmx - acc;
		if (pour < 0) continue;
		double tot = test(l,k,t1,t2,h,pour);
		if (tot > h) ansmx -= acc;
		acc /= 2;
	}


	cout << setprecision(15) << ansmn*t1 << " " << ansmx*t1 << endl;
	
}

















Test details

Test 1

Verdict: ACCEPTED

input
80.00 0.50 2.00 1.50 80.00

correct output
80.000000000 80.759403280

user output
80 80.759403279979

Test 2

Verdict: ACCEPTED

input
100.00 0.50 2.00 1.50 80.00

correct output
80.000000000 80.000000000

user output
80 80

Test 3

Verdict: ACCEPTED

input
150.00 1.00 100.00 150.00 100....

correct output
100.000000000 100.000000000

user output
100 100

Test 4

Verdict: ACCEPTED

input
150.00 1.00 100.00 150.00 150....

correct output
150.000000000 358.113883008

user output
150 358.113883008419

Test 5

Verdict: ACCEPTED

input
150.00 1.00 100.00 15.00 415.0...

correct output
500.000000000 500.000000000

user output
500 500

Test 6

Verdict: ACCEPTED

input
50.00 5.00 2.00 2.00 40.00

correct output
40.000000000 40.000000000

user output
40 40

Test 7

Verdict: ACCEPTED

input
50.00 5.00 2.00 2.00 50.00

correct output
50.000000000 61.925824036

user output
50 61.9258240356725

Test 8

Verdict: ACCEPTED

input
50.00 5.00 2.00 2.00 65.00

correct output
78.642080737 78.642080737

user output
78.6420807370024 78.6420807370...

Test 9

Verdict: ACCEPTED

input
10.00 1.00 3.00 3.00 3.00

correct output
3.000000000 3.000000000

user output
3 3

Test 10

Verdict: ACCEPTED

input
10.00 1.00 3.00 3.00 10.00

correct output
10.000000000 13.830951895

user output
10 13.8309518948453

Test 11

Verdict: ACCEPTED

input
10.00 1.00 3.00 3.00 16.00

correct output
20.539392014 20.539392014

user output
20.5393920141695 20.5393920141...

Test 12

Verdict: ACCEPTED

input
10.00 1.00 3.00 3.00 25.00

correct output
30.000000000 30.000000000

user output
30 30

Test 13

Verdict: ACCEPTED

input
10.00 1.00 3.00 3.00 33.00

correct output
38.214967272 38.214967272

user output
38.2149672722129 38.2149672722...

Test 14

Verdict: ACCEPTED

input
1.00 2.00 3.00 2.00 5.00

correct output
14.588723439 14.588723439

user output
14.5887234393789 14.5887234393...

Test 15

Verdict: ACCEPTED

input
6.00 2.00 3.00 2.00 7.00

correct output
14.520797289 14.520797289

user output
14.5207972893961 14.5207972893...

Test 16

Verdict: ACCEPTED

input
11.00 2.00 3.00 2.00 11.00

correct output
11.000000000 17.152067348

user output
11 17.152067347825

Test 17

Verdict: ACCEPTED

input
16.00 2.00 3.00 2.00 15.00

correct output
15.000000000 15.000000000

user output
15 15

Test 18

Verdict: ACCEPTED

input
21.00 2.00 3.00 2.00 15.00

correct output
15.000000000 15.000000000

user output
15 15

Test 19

Verdict: ACCEPTED

input
26.00 2.00 3.00 2.00 15.00

correct output
15.000000000 15.000000000

user output
15 15

Test 20

Verdict: ACCEPTED

input
31.00 2.00 3.00 2.00 15.00

correct output
15.000000000 15.000000000

user output
15 15

Test 21

Verdict: ACCEPTED

input
25.00 2.00 1.00 1.00 10.00

correct output
10.000000000 10.000000000

user output
10 10

Test 22

Verdict: ACCEPTED

input
25.00 2.00 1.00 2.00 10.00

correct output
10.000000000 10.000000000

user output
10 10

Test 23

Verdict: ACCEPTED

input
25.00 2.00 1.00 3.00 10.00

correct output
10.000000000 10.000000000

user output
10 10

Test 24

Verdict: ACCEPTED

input
25.00 2.00 2.00 1.00 20.00

correct output
20.000000000 20.000000000

user output
20 20

Test 25

Verdict: ACCEPTED

input
25.00 2.00 2.00 2.00 20.00

correct output
20.000000000 20.000000000

user output
20 20

Test 26

Verdict: ACCEPTED

input
25.00 2.00 2.00 3.00 20.00

correct output
20.000000000 20.000000000

user output
20 20

Test 27

Verdict: ACCEPTED

input
25.00 2.00 3.00 1.00 26.00

correct output
28.789826123 28.789826123

user output
28.7898261225516 28.7898261225...

Test 28

Verdict: ACCEPTED

input
25.00 2.00 3.00 2.00 25.00

correct output
25.000000000 30.000000000

user output
25 30

Test 29

Verdict: ACCEPTED

input
25.00 2.00 3.00 3.00 25.00

correct output
25.000000000 32.365424624

user output
25 32.3654246238621

Test 30

Verdict: ACCEPTED

input
25.00 2.00 4.00 1.00 34.00

correct output
38.852299546 38.852299546

user output
38.8522995463527 38.8522995463...

Test 31

Verdict: ACCEPTED

input
25.00 2.00 4.00 2.00 32.00

correct output
38.852299546 38.852299546

user output
38.8522995463527 38.8522995463...

Test 32

Verdict: ACCEPTED

input
25.00 2.00 4.00 3.00 30.00

correct output
38.852299546 38.852299546

user output
38.8522995463527 38.8522995463...

Test 33

Verdict: ACCEPTED

input
25.00 2.00 3.00 2.00 25.00

correct output
25.000000000 30.000000000

user output
25 30

Test 34

Verdict: ACCEPTED

input
25.00 2.00 3.00 3.00 25.00

correct output
25.000000000 32.365424624

user output
25 32.3654246238621

Test 35

Verdict: ACCEPTED

input
5.00 7.00 0.01 2.00 6.00

correct output
20.052545857 20.052545857

user output
20.0525458571448 20.0525458571...

Test 36

Verdict: ACCEPTED

input
0.01 1000.00 1000.00 1000.00 1...

correct output
2000999.995002499 2000999.9950...

user output
2000999.9950025 2000999.995002...