제출 #535238

#제출 시각아이디문제언어결과실행 시간메모리
535238fcwBalloons (CEOI11_bal)C++17
100 / 100
205 ms8120 KiB
#include <bits/stdc++.h> #define st first #define nd second using lint = int64_t; constexpr int mod = int(1e9) + 7; constexpr int inf = 0x3f3f3f3f; constexpr int ninf = 0xcfcfcfcf; constexpr lint linf = 0x3f3f3f3f3f3f3f3f; const long double pi = acosl(-1.0); // Returns -1 if a < b, 0 if a = b and 1 if a > b. int cmp_double(double a, double b = 0, double eps = 1e-9) { return a + eps > b ? b + eps > a ? 0 : 1 : -1; } using namespace std; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n; cin>>n; vector<long double>x(n), r(n); for(int i=0;i<n;i++) cin>>x[i]>>r[i]; stack<int>s; auto check = [&](int i, int j)->bool{ return (x[i] - x[j]) + 1e-7 >= 2 * sqrtl(r[i] * r[j]); }; for(int i=0;i<n;i++){ while(!s.empty()){ int j = s.top(); if(check(i, j)){ if(r[i] >= r[j]) s.pop(); else break; } else{ r[i] = (x[i] - x[j]) * (x[i] - x[j]) /r[j]/ 4; } } s.push(i); } cout<<fixed<<setprecision(3); for(int i=0;i<n;i++) cout<<r[i]<<"\n"; return 0; } /* [ ]Leu o problema certo??? [ ]Ver se precisa de long long [ ]Viu o limite dos fors (é n? é m?) [ ]Tamanho do vetor, será que é 2e5 em vez de 1e5?? [ ]Testar sample [ ]Testar casos de borda [ ]1LL no 1LL << i [ ]Testar mod (é 1e9+7, mesmo?, será que o mod não ficou negativo?) */
#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...