답안 #356808

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
356808 2021-01-23T17:44:01 Z jnk Balloons (CEOI11_bal) C++17
70 / 100
2000 ms 15696 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

double x[200005], r[200005], res[200005];

int main(){
    
    int n; cin >> n;
    for(int i = 0; i < n; i++)
        scanf("%lf %lf", &x[i], &r[i]);

    res[0] = r[0];
    stack<pair<double,double>> st;
    st.push(make_pair(x[0], res[0]));

    for(int i = 1; i < n; i++){
        double esq = 0, dir = r[i];
        for(int j = 0; j < 45; j++){
            double r = (esq + dir)/2;
            int ok = 1;
            vector<pair<double,double>> safe;
            while(!st.empty()){
                auto p = st.top();
                double xdif = x[i] - p.first;
                double ydif = r - p.second;
                double dist = r+p.second;

                if(xdif*xdif + ydif*ydif < dist*dist){
                    ok = 0;
                    break;
                }
                if(r > p.second) st.pop(), safe.push_back(p);
                else break;
            }

            if(ok) esq = r;
            else dir = r;
            for(int i = int(safe.size()) - 1; i >= 0; i--)
                st.push(safe[i]);
        }
        res[i] = esq;
        st.push(make_pair(x[i], res[i]));
    }

    for(int i = 0; i < n; i++)
        printf("%.3f\n", res[i]);

	return 0;
}

Compilation message

bal.cpp: In function 'int main()':
bal.cpp:46:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   46 |     for(int i = 0; i < n; i++)
      |     ^~~
bal.cpp:49:2: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   49 |  return 0;
      |  ^~~~~~
bal.cpp:11:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   11 |         scanf("%lf %lf", &x[i], &r[i]);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB 10 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 364 KB 2 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 364 KB 505 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 6 ms 492 KB 2000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 68 ms 1572 KB 20000 numbers
# 결과 실행 시간 메모리 Grader output
1 Correct 1589 ms 3740 KB 50000 numbers
2 Correct 148 ms 4256 KB 49912 numbers
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2059 ms 7276 KB Time limit exceeded
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2071 ms 7036 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1629 ms 12888 KB 154271 numbers
2 Correct 536 ms 15696 KB 200000 numbers
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2054 ms 6472 KB Time limit exceeded
2 Halted 0 ms 0 KB -