Submission #576375

#TimeUsernameProblemLanguageResultExecution timeMemory
576375BenqtBalloons (CEOI11_bal)C++17
20 / 100
613 ms15708 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;

const int INF = 1000000000;
const ll LINF = (ll) INF * (ll) INF;
const ld DINF = (ld) INF * (ld) INF;

int main() {
	int n;
	cin >> n;
	vector<pair<ld, ld>> arr(n);
	for (int i=0; i<n; i++) {
		cin >> arr[i].first; //x coord
		cin >> arr[i].second; //radius
	}
	vector<pair<ld, ld>> q;
	q.push_back(arr[0]);

	for (int i=1; i<n; i++) {
		while (true) {
			/*cout << i << ": current stack:" << endl;
			for (pair<ld, ld> k : q) {
				cout << "(" << k.first << " , " << k.second << ") ";
			}
			cout << endl;*/
			if (q.empty()) {
				break;
			}
			pair<ld, ld> last = q[q.size()-1];
			ld h1 = arr[i].first - last.first;
			ld r1 = (h1 * h1)/(4 * last.second);
			//cout << "r1: " << r1 << endl;

			if (q.size() == 1) {
				arr[i].second = min(arr[i].second, r1);
				break;
			}

			pair<ld, ld> second_last = q[q.size()-2];
			ld h2 = arr[i].first - second_last.first;
			ld r2 = (h2 * h2)/(4 * second_last.second);
			//cout << "r1r2 " << r1 << " " << r2 << endl;
			if (r2 < r1) {
				q.pop_back();
			} else {
				arr[i].second = min(arr[i].second, min(r2, r1));
				break;
			}
			arr[i].second = min(arr[i].second, min(r2, r1));
		}
		q.push_back(arr[i]);
	}
	cout << setprecision(20) << endl;
	for (int i=0; i<n; i++) {
		cout << arr[i].second << endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...