QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#105048 | #5505. Great Chase | kingstonduy | WA | 1559ms | 3680kb | C++23 | 1.4kb | 2023-05-12 21:14:20 | 2023-05-12 21:14:22 |
Judging History
answer
#include <iostream>
#include <iomanip>
#include <vector>
#include <limits>
using namespace std;
int main() {
int tc;
cin >> tc;
while (tc != 0) {
tc--;
double n, v;
cin >> n >> v;
vector<pair<double, double>> a;
for (int i = 0; i < n; i++) {
double pi, vi;
cin >> pi >> vi;
a.push_back(make_pair(pi, vi));
}
double l = 0;
double r = 1e12;
double res = 0;
double e = 0.0000000001;
int cnt = 100;
while (l <= r && l + e < r && cnt != 0) {
cnt--;
double mid = (l + r) / 2;
double ls = -1e18;
double rs = 1e18;
for (int i = 0; i < n; i++) {
double temp1 = a[i].first;
double temp2 = a[i].second;
double dis = temp2 * mid;
if (temp1 < 0) {
ls = max(ls, temp1 + dis);
} else if (temp1 == temp2) {
rs = mid;
break;
} else {
rs = min(rs, temp1 - dis);
}
}
if (ls <= rs) {
res = max(res, mid);
l = mid + e;
} else {
r = mid - e;
}
}
cout << fixed << setprecision(10) << res * v << endl;
}
return 0;
}
详细
Test #1:
score: 100
Accepted
time: 2ms
memory: 3604kb
input:
3 4 9 10 2 -7 2 -6 1 7 1 2 8 -1 7 1 6 2 3 -1000000000000 1 1000000000000 1
output:
38.2499999987 1.2307692292 3000000000000.0000000000
result:
ok 3 numbers
Test #2:
score: -100
Wrong Answer
time: 1559ms
memory: 3680kb
input:
10000 200 997007 405524182320 754760 686939601648 419804 687047488212 715566 1446157132 4594 -670522037 4673 763634629282 253755 424307411732 275041 1582708381 8473 -667425982 4622 -522841486 1427 702430907988 460271 1405423646 1060 1497754648 6227 883363410675 723547 56899800372 46435 -810216390 64...
output:
145405766328.3489990234 16414958969.7272777557 5202715639.8351545334 321977234.1562350988 45384199210.2216644287 183885744.7692267895 1708925225.2303857803 89786664971.5578155518 13924365606.2872714996 412975327.5555295944 965508404.5120820999 4703493416.2883739471 352961619.3810160756 5575125771.79...
result:
wrong answer 4566th numbers differ - expected: '1.0000010', found: '0.9998224', error = '0.0001786'