답안 #763440

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
763440 2023-06-22T10:01:40 Z airths Balloons (CEOI11_bal) C++17
100 / 100
140 ms 8264 KB
/*
 * 
 * 	\OoO/
 * 
 */
#include <iostream>
#include <string>
#include <cmath>
#include <vector>
#include <iomanip>
#include <map>
#include <numeric>
#include <functional>
#include <algorithm>
#include <set>
#include <queue>
#include <climits>
#include <cstdlib>
#include <chrono>
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
using namespace std;
// #define ordered_set tree<ll, null_type, less<ll>, rb_tree_tag, tree_order_statistics_node_update>
#define iamtefu ios_base::sync_with_stdio(false); cin.tie(0);
#define ll long long int
#define ld long double
#define fl(i,a,n) for (ll i(a); i<n; i++)
#define rfl(i,a,n) for (ll i(n-1); i>=a; i--)
#define print(a) for (auto x:a){cout<<x<<" ";} cout<<"\n";
#define tt int tt; cin>>tt; for(;tt--;)
ll gcd(ll a, ll b){
	if (b==0){
		return a;
	}
	return gcd(b, a%b);
}
ll pw(ll a, ll b, ll m){
	ll res=1;
	a%=m;
	while (b){
		if (b&1){
			res=(res*a)%m;
		}
		a=(a*a)%m;
		b>>=1;
	}
	return res;
}
void scn(){
	ll n; cin>>n;
	vector <pair<ll,ld>> a(n);
	fl(i,0,n){
		cin>>a[i].first>>a[i].second;
	}
	sort(a.begin(), a.end());
	auto dis=[&](ll x1, ll x2, ld r1){
		return (1.0*((x1-x2)*(x1-x2)))/(4*r1);
	};
	cout<<fixed<<setprecision(3);
	vector <ll> hu;
	fl(i,0,n){
		ll sz=0;
		//vector <ll> heh;
		while (hu.size() && a[i].second>=a[hu.back()].second){
			a[i].second=min(a[i].second, dis(a[i].first, a[hu.back()].first, a[hu.back()].second));
			//heh.push_back(hu.back());
			if (a[i].second>=a[hu.back()].second){
				hu.pop_back();
			}
		}
		if (hu.size()){
			a[i].second=min(a[i].second, dis(a[i].first, a[hu.back()].first, a[hu.back()].second));
			/*while (heh.size() && a[heh.back()].second>a[i].second){
				hu.push_back(heh.back());
				heh.pop_back();
			}*/
			hu.push_back(i);
		} else {
			/*while (heh.size() && a[heh.back()].second>a[i].second){
				hu.push_back(heh.back());
				heh.pop_back();
			}*/
			hu.push_back(i);
		}
	}
	for (auto x:a){
		cout<<x.second<<"\n";
	}
	//cout<<"\n";
}
int main(){
	iamtefu;
#if defined(airths)
	auto t1=chrono::high_resolution_clock::now();
	freopen("input.txt", "r", stdin);
	//freopen("output.txt", "w", stdout);
#else
	//
#endif
	//tt
	{
		scn();
	}
#if defined(airths)
	auto t2=chrono::high_resolution_clock::now();
	ld ti=chrono::duration_cast<chrono::nanoseconds>(t2-t1).count();
	ti*=1e-6;
	cerr<<"Time elapsed: "<<setprecision(12)<<ti;
	cerr<<"ms\n";
#endif
	return 0;
}

Compilation message

bal.cpp: In function 'void scn()':
bal.cpp:63:6: warning: unused variable 'sz' [-Wunused-variable]
   63 |   ll sz=0;
      |      ^~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB 10 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB 2 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB 505 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 328 KB 2000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 15 ms 1156 KB 20000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 36 ms 2636 KB 50000 numbers
2 Correct 40 ms 2288 KB 49912 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 77 ms 4484 KB 100000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 104 ms 5264 KB 115362 numbers
2 Correct 86 ms 5032 KB 119971 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 122 ms 6692 KB 154271 numbers
2 Correct 140 ms 8024 KB 200000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 140 ms 8264 KB 200000 numbers
2 Correct 131 ms 8068 KB 199945 numbers