提出 #35595508
ソースコード 拡げる
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,n) for (ll i=a;i<(ll)n;i++)
ll read(){ll r;scanf("%lld",&r);return r;}
vector<tuple<int,int,int> > abc;
const double PI=acos(-1);
double xy2theta(double x,double y){ // (x,y) -> theta
if(x>=0 && y>=0) return atan(y/x);
if(x<0 && y>=0) return PI/2+atan(-x/y);
if(x<0 && y<0) return PI+atan(y/x);
return 3*PI/2+atan(-x/y);
}
pair<double,double> solve(double A,double B,double C){ // Ax^2+Bx+C=0
return {(-B+sqrt(abs(B*B-4*A*C)))/(2*A),(-B-sqrt(abs(B*B-4*A*C)))/(2*A)};
}
ll cross(const vector<pair<int,int>>&ij){ // 线段相交数
vector<int>fen(ij.size()*2);//fenwick
auto query=[&](int x){
int r=0;
for(int i=x+1;i;i-=(i&-i)) r+=fen[i-1];
return r;
};
auto add=[&](int x){
for(int i=x+1;i<=(int)fen.size();i+=(i&-i)) fen[i-1]++;
};
ll r=0;
for(auto [i,j]:ij){
r+=query(j-1)-query(i); // pi < i < pj < j, 查询 [i+1,j-1]
add(j);
}
return r;
}
int f(double radius){
vector<pair<double,double>> lr;
for(auto [a,b,c]:abc)if(abs(c)/sqrt(a*a+b*b) < radius){
double x0,y0,x1,y1;
if(a != 0){
tie(y0,y1) = solve(a*a+b*b,2*b*c,c*c-a*a*radius*radius);
x0 = -(b*y0+c)/a;
x1 = -(b*y1+c)/a;
}else{
tie(x0,x1) = solve(a*a+b*b,2*a*c,c*c-b*b*radius*radius);
y0 = -(a*x0+c)/b;
y1 = -(a*x1+c)/b;
}
auto l = xy2theta(x0,y0);
auto r = xy2theta(x1,y1);
if(l>r)swap(l,r);
lr.push_back({l,r});
}
vector<double> p;
for(auto[l,r]:lr){
p.push_back(l);
p.push_back(r);
}
sort(begin(p),end(p));
vector<pair<int,int> >ij;
for(auto [l,r]:lr)ij.push_back({
lower_bound(begin(p),end(p),l)-begin(p),
lower_bound(begin(p),end(p),r)-begin(p)
});
sort(begin(ij),end(ij));
return cross(ij);
}
int main(){
int n = read();
int k = read();
rep(i,0,n)abc.push_back({read(),read(),read()});
double l = 0;
double r = 4e6;
while(r-l>1e-6){
double mid=(l+r)/2;
(f(mid)<k?l:r)=mid;
}
printf("%.15lf\n",l);
return 0;
}
提出情報
コンパイルエラー
./Main.cpp: In function ‘ll read()’:
./Main.cpp:5:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
5 | ll read(){ll r;scanf("%lld",&r);return r;}
| ~~~~~^~~~~~~~~~~
ジャッジ結果
セット名 |
Sample |
All |
得点 / 配点 |
0 / 0 |
600 / 600 |
結果 |
|
|
セット名 |
テストケース |
Sample |
example_00.txt, example_01.txt |
All |
example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt |
ケース名 |
結果 |
実行時間 |
メモリ |
example_00.txt |
AC |
7 ms |
4072 KiB |
example_01.txt |
AC |
2 ms |
4124 KiB |
test_00.txt |
AC |
874 ms |
6404 KiB |
test_01.txt |
AC |
49 ms |
4212 KiB |
test_02.txt |
AC |
243 ms |
4268 KiB |
test_03.txt |
AC |
246 ms |
4412 KiB |
test_04.txt |
AC |
471 ms |
5436 KiB |
test_05.txt |
AC |
706 ms |
6532 KiB |
test_06.txt |
AC |
588 ms |
5408 KiB |
test_07.txt |
AC |
52 ms |
4236 KiB |
test_08.txt |
AC |
261 ms |
4572 KiB |
test_09.txt |
AC |
203 ms |
4328 KiB |
test_10.txt |
AC |
2 ms |
4008 KiB |
test_11.txt |
AC |
2 ms |
3940 KiB |
test_12.txt |
AC |
2 ms |
4000 KiB |
test_13.txt |
AC |
2 ms |
4104 KiB |
test_14.txt |
AC |
2 ms |
3948 KiB |
test_15.txt |
AC |
5 ms |
3944 KiB |
test_16.txt |
AC |
2 ms |
4180 KiB |
test_17.txt |
AC |
2 ms |
4064 KiB |
test_18.txt |
AC |
2 ms |
4048 KiB |
test_19.txt |
AC |
2 ms |
4076 KiB |
test_20.txt |
AC |
1075 ms |
6704 KiB |
test_21.txt |
AC |
673 ms |
6808 KiB |
test_22.txt |
AC |
1073 ms |
6808 KiB |
test_23.txt |
AC |
1029 ms |
6752 KiB |
test_24.txt |
AC |
1012 ms |
6704 KiB |
test_25.txt |
AC |
1051 ms |
6800 KiB |
test_26.txt |
AC |
1055 ms |
6696 KiB |
test_27.txt |
AC |
1053 ms |
6696 KiB |
test_28.txt |
AC |
1046 ms |
6752 KiB |
test_29.txt |
AC |
1050 ms |
6840 KiB |
test_30.txt |
AC |
587 ms |
6956 KiB |
test_31.txt |
AC |
587 ms |
6848 KiB |
test_32.txt |
AC |
586 ms |
6852 KiB |
test_33.txt |
AC |
75 ms |
4120 KiB |
test_34.txt |
AC |
601 ms |
5512 KiB |
test_35.txt |
AC |
234 ms |
4476 KiB |
test_36.txt |
AC |
342 ms |
5056 KiB |
test_37.txt |
AC |
165 ms |
4312 KiB |
test_38.txt |
AC |
816 ms |
6424 KiB |
test_39.txt |
AC |
913 ms |
6368 KiB |
test_40.txt |
AC |
246 ms |
4676 KiB |
test_41.txt |
AC |
884 ms |
6548 KiB |
test_42.txt |
AC |
1051 ms |
6748 KiB |
test_43.txt |
AC |
1055 ms |
6812 KiB |
test_44.txt |
AC |
1053 ms |
6948 KiB |
test_45.txt |
AC |
2 ms |
3864 KiB |
test_46.txt |
AC |
2 ms |
3996 KiB |
test_47.txt |
AC |
2 ms |
4012 KiB |
test_48.txt |
AC |
2 ms |
3860 KiB |
test_49.txt |
AC |
2 ms |
3996 KiB |