QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#362224 | #8505. Almost Aligned | ucup-team112# | WA | 3569ms | 65672kb | C++23 | 10.7kb | 2024-03-23 14:39:49 | 2024-03-23 14:39:51 |
Judging History
answer
// #pragma GCC target("avx2")
// #pragma GCC optimize("O3")
// #pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
// #define INTERACTIVE
namespace templates {
// type
using ll = long long;
using ull = unsigned long long;
using Pii = pair<int, int>;
using Pil = pair<int, ll>;
using Pli = pair<ll, int>;
using Pll = pair<ll, ll>;
template <class T>
using pq = priority_queue<T>;
template <class T>
using qp = priority_queue<T, vector<T>, greater<T>>;
// clang-format off
#define vec(T, A, ...) vector<T> A(__VA_ARGS__);
#define vvec(T, A, h, ...) vector<vector<T>> A(h, vector<T>(__VA_ARGS__));
#define vvvec(T, A, h1, h2, ...) vector<vector<vector<T>>> A(h1, vector<vector<T>>(h2, vector<T>(__VA_ARGS__)));
// clang-format on
// for loop
#define fori1(a) for (ll _ = 0; _ < (a); _++)
#define fori2(i, a) for (ll i = 0; i < (a); i++)
#define fori3(i, a, b) for (ll i = (a); i < (b); i++)
#define fori4(i, a, b, c) for (ll i = (a); ((c) > 0 || i > (b)) && ((c) < 0 || i < (b)); i += (c))
#define overload4(a, b, c, d, e, ...) e
#define fori(...) overload4(__VA_ARGS__, fori4, fori3, fori2, fori1)(__VA_ARGS__)
// declare and input
// clang-format off
#define INT(...) int __VA_ARGS__; inp(__VA_ARGS__);
#define LL(...) ll __VA_ARGS__; inp(__VA_ARGS__);
#define STRING(...) string __VA_ARGS__; inp(__VA_ARGS__);
#define CHAR(...) char __VA_ARGS__; inp(__VA_ARGS__);
#define DOUBLE(...) double __VA_ARGS__; STRING(str___); __VA_ARGS__ = stod(str___);
#define VEC(T, A, n) vector<T> A(n); inp(A);
#define VVEC(T, A, n, m) vector<vector<T>> A(n, vector<T>(m)); inp(A);
// clang-format on
// const value
const ll MOD1 = 1000000007;
const ll MOD9 = 998244353;
const double PI = acos(-1);
// other macro
#if !defined(RIN__LOCAL) && !defined(INTERACTIVE)
#define endl "\n"
#endif
#define spa ' '
#define len(A) ll(A.size())
#define all(A) begin(A), end(A)
// function
vector<char> stoc(string &S) {
int n = S.size();
vector<char> ret(n);
for (int i = 0; i < n; i++) ret[i] = S[i];
return ret;
}
string ctos(vector<char> &S) {
int n = S.size();
string ret = "";
for (int i = 0; i < n; i++) ret += S[i];
return ret;
}
template <class T>
auto min(const T &a) {
return *min_element(all(a));
}
template <class T>
auto max(const T &a) {
return *max_element(all(a));
}
template <class T, class S>
auto clamp(T &a, const S &l, const S &r) {
return (a > r ? r : a < l ? l : a);
}
template <class T, class S>
inline bool chmax(T &a, const S &b) {
return (a < b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chmin(T &a, const S &b) {
return (a > b ? a = b, 1 : 0);
}
template <class T, class S>
inline bool chclamp(T &a, const S &l, const S &r) {
auto b = clamp(a, l, r);
return (a != b ? a = b, 1 : 0);
}
template <typename T>
T sum(vector<T> &A) {
T tot = 0;
for (auto a : A) tot += a;
return tot;
}
template <typename T>
vector<T> compression(vector<T> X) {
sort(all(X));
X.erase(unique(all(X)), X.end());
return X;
}
// input and output
namespace io {
// __int128_t
std::ostream &operator<<(std::ostream &dest, __int128_t value) {
std::ostream::sentry s(dest);
if (s) {
__uint128_t tmp = value < 0 ? -value : value;
char buffer[128];
char *d = std::end(buffer);
do {
--d;
*d = "0123456789"[tmp % 10];
tmp /= 10;
} while (tmp != 0);
if (value < 0) {
--d;
*d = '-';
}
int len = std::end(buffer) - d;
if (dest.rdbuf()->sputn(d, len) != len) {
dest.setstate(std::ios_base::badbit);
}
}
return dest;
}
// vector<T>
template <typename T>
istream &operator>>(istream &is, vector<T> &A) {
for (auto &a : A) is >> a;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, vector<T> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << ' ';
}
return os;
}
// vector<vector<T>>
template <typename T>
istream &operator>>(istream &is, vector<vector<T>> &A) {
for (auto &a : A) is >> a;
return is;
}
template <typename T>
ostream &operator<<(ostream &os, vector<vector<T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << endl;
}
return os;
}
// pair<S, T>
template <typename S, typename T>
istream &operator>>(istream &is, pair<S, T> &A) {
is >> A.first >> A.second;
return is;
}
template <typename S, typename T>
ostream &operator<<(ostream &os, pair<S, T> &A) {
os << A.first << ' ' << A.second;
return os;
}
// vector<pair<S, T>>
template <typename S, typename T>
istream &operator>>(istream &is, vector<pair<S, T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
is >> A[i];
}
return is;
}
template <typename S, typename T>
ostream &operator<<(ostream &os, vector<pair<S, T>> &A) {
for (size_t i = 0; i < A.size(); i++) {
os << A[i];
if (i != A.size() - 1) os << endl;
}
return os;
}
// tuple
template <typename T, size_t N>
struct TuplePrint {
static ostream &print(ostream &os, const T &t) {
TuplePrint<T, N - 1>::print(os, t);
os << ' ' << get<N - 1>(t);
return os;
}
};
template <typename T>
struct TuplePrint<T, 1> {
static ostream &print(ostream &os, const T &t) {
os << get<0>(t);
return os;
}
};
template <typename... Args>
ostream &operator<<(ostream &os, const tuple<Args...> &t) {
TuplePrint<decltype(t), sizeof...(Args)>::print(os, t);
return os;
}
// io functions
void FLUSH() {
cout << flush;
}
void print() {
cout << endl;
}
template <class Head, class... Tail>
void print(Head &&head, Tail &&...tail) {
cout << head;
if (sizeof...(Tail)) cout << spa;
print(std::forward<Tail>(tail)...);
}
template <typename T, typename S>
void prisep(vector<T> &A, S sep) {
int n = A.size();
for (int i = 0; i < n; i++) {
cout << A[i];
if (i != n - 1) cout << sep;
}
cout << endl;
}
template <typename T, typename S>
void priend(T A, S end) {
cout << A << end;
}
template <typename T>
void prispa(T A) {
priend(A, spa);
}
template <typename T, typename S>
bool printif(bool f, T A, S B) {
if (f)
print(A);
else
print(B);
return f;
}
template <class... T>
void inp(T &...a) {
(cin >> ... >> a);
}
} // namespace io
using namespace io;
// read graph
vector<vector<int>> read_edges(int n, int m, bool direct = false, int indexed = 1) {
vector<vector<int>> edges(n, vector<int>());
for (int i = 0; i < m; i++) {
INT(u, v);
u -= indexed;
v -= indexed;
edges[u].push_back(v);
if (!direct) edges[v].push_back(u);
}
return edges;
}
vector<vector<int>> read_tree(int n, int indexed = 1) {
return read_edges(n, n - 1, false, indexed);
}
template <typename T = long long>
vector<vector<pair<int, T>>> read_wedges(int n, int m, bool direct = false, int indexed = 1) {
vector<vector<pair<int, T>>> edges(n, vector<pair<int, T>>());
for (int i = 0; i < m; i++) {
INT(u, v);
T w;
inp(w);
u -= indexed;
v -= indexed;
edges[u].push_back({v, w});
if (!direct) edges[v].push_back({u, w});
}
return edges;
}
template <typename T = long long>
vector<vector<pair<int, T>>> read_wtree(int n, int indexed = 1) {
return read_wedges<T>(n, n - 1, false, indexed);
}
// yes / no
namespace yesno {
// yes
inline bool yes(bool f = true) {
cout << (f ? "yes" : "no") << endl;
return f;
}
inline bool Yes(bool f = true) {
cout << (f ? "Yes" : "No") << endl;
return f;
}
inline bool YES(bool f = true) {
cout << (f ? "YES" : "NO") << endl;
return f;
}
// no
inline bool no(bool f = true) {
cout << (!f ? "yes" : "no") << endl;
return f;
}
inline bool No(bool f = true) {
cout << (!f ? "Yes" : "No") << endl;
return f;
}
inline bool NO(bool f = true) {
cout << (!f ? "YES" : "NO") << endl;
return f;
}
// possible
inline bool possible(bool f = true) {
cout << (f ? "possible" : "impossible") << endl;
return f;
}
inline bool Possible(bool f = true) {
cout << (f ? "Possible" : "Impossible") << endl;
return f;
}
inline bool POSSIBLE(bool f = true) {
cout << (f ? "POSSIBLE" : "IMPOSSIBLE") << endl;
return f;
}
// impossible
inline bool impossible(bool f = true) {
cout << (!f ? "possible" : "impossible") << endl;
return f;
}
inline bool Impossible(bool f = true) {
cout << (!f ? "Possible" : "Impossible") << endl;
return f;
}
inline bool IMPOSSIBLE(bool f = true) {
cout << (!f ? "POSSIBLE" : "IMPOSSIBLE") << endl;
return f;
}
// Alice Bob
inline bool Alice(bool f = true) {
cout << (f ? "Alice" : "Bob") << endl;
return f;
}
inline bool Bob(bool f = true) {
cout << (f ? "Bob" : "Alice") << endl;
return f;
}
// Takahashi Aoki
inline bool Takahashi(bool f = true) {
cout << (f ? "Takahashi" : "Aoki") << endl;
return f;
}
inline bool Aoki(bool f = true) {
cout << (f ? "Aoki" : "Takahashi") << endl;
return f;
}
} // namespace yesno
using namespace yesno;
} // namespace templates
using namespace templates;
using ld = long double;
void solve() {
LL(n);
vec(ld, X, n);
vec(ld, Y, n);
vec(ld, VX, n);
vec(ld, VY, n);
fori(i, n) {
STRING(x, y, vx, vy);
X[i] = stod(x);
Y[i] = stod(y);
VX[i] = stod(vx);
VY[i] = stod(vy);
}
auto f = [&](ld x) -> ld {
ld min_x = X[0] + VX[0] * x;
ld max_x = X[0] + VX[0] * x;
ld min_y = Y[0] + VY[0] * x;
ld max_y = Y[0] + VY[0] * x;
fori(i, 1, n) {
chmin(min_x, X[i] + VX[i] * x);
chmax(max_x, X[i] + VX[i] * x);
chmin(min_y, Y[i] + VY[i] * x);
chmax(max_y, Y[i] + VY[i] * x);
}
return (max_x - min_x) * (max_y - min_y);
};
ld l = 0;
ld r = 1e40;
fori(320) {
ld c1 = (l * 2 + r) / 3;
ld c2 = (l + r * 2) / 3;
if (f(c1) < f(c2)) {
r = c2;
} else {
l = c1;
}
}
print(min(f(l), f(r)));
}
int main() {
#ifndef INTERACTIVE
cin.tie(0)->sync_with_stdio(0);
#endif
cout << fixed << setprecision(15);
int t;
t = 1;
// cin >> t;
while (t--) solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3852kb
input:
4 0 0 10 10 0 0 10 10 10 10 -10 -10 10 0 -20 0
output:
22.222222222222223
result:
ok found '22.222222222', expected '22.222222222', error '0.000000000'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3792kb
input:
3 0 -1 0 2 1 1 1 1 -1 1 -1 1
output:
0.000000000000000
result:
ok found '0.000000000', expected '0.000000000', error '-0.000000000'
Test #3:
score: 0
Accepted
time: 0ms
memory: 3804kb
input:
3 0 -1 0 -2 1 1 1 1 -1 1 -1 1
output:
4.000000000000000
result:
ok found '4.000000000', expected '4.000000000', error '0.000000000'
Test #4:
score: 0
Accepted
time: 0ms
memory: 3752kb
input:
1 0 0 0 0
output:
0.000000000000000
result:
ok found '0.000000000', expected '0.000000000', error '-0.000000000'
Test #5:
score: 0
Accepted
time: 0ms
memory: 4032kb
input:
4 1000000 1000000 -1 -1000000 1000000 -1000000 -1000000 1 -1000000 -1000000 1 1000000 -1000000 1000000 1000000 -1
output:
3999984000031.999952077865601
result:
ok found '3999984000032.000000000', expected '3999984000032.000000000', error '0.000000000'
Test #6:
score: 0
Accepted
time: 3569ms
memory: 65672kb
input:
1000000 -871226 486657 -467526 31395 -65837 846554 469710 -907814 927993 -45099 713462 -276539 261942 483255 746021 811070 63449 -779486 588838 -413687 812070 -87868 -813499 -420768 112521 -622607 -832012 921368 -182120 517379 -401743 -837524 -685985 337832 643014 135144 12895 326935 -495720 930620 ...
output:
3999996000000.000000000000000
result:
ok found '3999996000000.000000000', expected '3999996000000.000000000', error '0.000000000'
Test #7:
score: 0
Accepted
time: 3535ms
memory: 65636kb
input:
1000000 3663 6989 -2671 9642 9904 -8111 -4995 5797 599 -8323 -9362 -9045 -6740 1530 3072 6531 3681 -6009 593 -7248 -7878 7266 -5191 4871 4007 -3346 -3801 -3512 192 4840 -4026 -1845 6224 -6143 -1857 5659 -5960 4616 9665 655 5532 -1324 -3901 351 -7670 3951 9243 -4678 2931 -115 -5127 -2353 -7500 -7221 ...
output:
400000000.000000000000000
result:
ok found '400000000.000000000', expected '400000000.000000000', error '0.000000000'
Test #8:
score: 0
Accepted
time: 0ms
memory: 3800kb
input:
10 -1 19 -2 6 -26 4 -8 0 6 27 0 7 -3 9 -1 -4 4 -5 5 -5 30 -21 -7 6 -23 -6 0 -5 0 19 3 -5 19 -22 -6 -5 -5 9 -2 5
output:
2744.000000000000000
result:
ok found '2744.000000000', expected '2744.000000000', error '0.000000000'
Test #9:
score: 0
Accepted
time: 0ms
memory: 3892kb
input:
10 -3 30 6 7 25 -7 -5 -6 21 8 8 6 -5 19 -6 -1 29 14 -4 -8 -18 15 -7 4 -1 -2 6 -4 -9 -23 -9 -10 -17 12 7 -6 28 16 -7 -4
output:
2491.000000000000000
result:
ok found '2491.000000000', expected '2491.000000000', error '0.000000000'
Test #10:
score: 0
Accepted
time: 1ms
memory: 3856kb
input:
100 259 401 17 5 145 -361 -30 -7 397 314 23 -29 -53 332 -19 -5 -11 413 4 -29 -152 -336 1 -26 479 -7 17 -5 142 121 3 24 93 -424 6 -16 387 -138 20 6 136 99 3 -19 -168 181 5 -26 416 -259 26 -28 -108 328 -11 15 247 190 -16 0 -446 473 27 -20 -450 -116 3 -23 79 -409 4 -13 -192 184 -18 -27 50 22 23 -7 187 ...
output:
951042.036882807852749
result:
ok found '951042.036882808', expected '951042.036882808', error '0.000000000'
Test #11:
score: 0
Accepted
time: 1ms
memory: 3924kb
input:
100 78 -474 17 -17 439 -473 2 -18 -81 -8 -23 14 405 363 -19 23 -85 491 -10 -11 130 433 -10 24 363 406 -26 -25 370 -110 29 -23 179 -354 -9 -14 155 -183 30 16 9 373 -17 -9 -376 486 16 -22 19 -221 15 -1 -449 253 27 19 -275 369 -17 13 -200 -412 -9 26 -184 -249 2 -25 103 -407 4 -20 326 28 -4 29 145 -101 ...
output:
985195.419501133787094
result:
ok found '985195.419501134', expected '985195.419501134', error '0.000000000'
Test #12:
score: 0
Accepted
time: 336ms
memory: 9360kb
input:
100000 -967368 981728 -282756 336437 261266 269990 509802 144678 462067 -410569 -758751 -855049 -223324 236410 -518913 543981 830399 -945912 -925250 -799821 -708921 186464 583718 422275 -764681 -276675 -270713 155951 -736997 136674 155052 -266181 191391 -482614 -181940 748298 85598 963827 730561 168...
output:
3999878000858.000000000000000
result:
ok found '3999878000858.000000000', expected '3999878000858.000000000', error '0.000000000'
Test #13:
score: 0
Accepted
time: 340ms
memory: 9428kb
input:
100000 735591 227533 -560510 -492634 151314 -955343 -798474 615112 -405134 -371377 72931 71513 995160 468797 39541 -692246 -412359 -48711 381217 49510 -33387 908154 -552594 -470470 893889 28395 -979649 -864267 -667790 324922 -645051 -356687 528418 -766919 496442 -133957 -667748 -194840 -961485 -8606...
output:
3999945328884.535302639007568
result:
ok found '3999945328884.535156250', expected '3999945328884.535156250', error '0.000000000'
Test #14:
score: 0
Accepted
time: 1ms
memory: 3796kb
input:
4 1 1 -2 -3 -2 1 4 -5 4 -1 0 -2 -3 -4 -1 5
output:
10.484375000000000
result:
ok found '10.484375000', expected '10.484375000', error '0.000000000'
Test #15:
score: 0
Accepted
time: 0ms
memory: 3808kb
input:
3 3 -1 5 -5 -1 1 -1 -4 0 4 -3 -5
output:
20.000000000000000
result:
ok found '20.000000000', expected '20.000000000', error '0.000000000'
Test #16:
score: 0
Accepted
time: 0ms
memory: 3852kb
input:
1 2 -2 -1 -3
output:
0.000000000000000
result:
ok found '0.000000000', expected '0.000000000', error '-0.000000000'
Test #17:
score: 0
Accepted
time: 1ms
memory: 3796kb
input:
9 2 1 0 -5 1 3 4 0 -2 2 5 5 -5 -1 4 0 -5 -1 3 0 4 3 0 -3 4 -5 1 1 5 -1 -2 -5 2 -4 -2 1
output:
69.444444444444445
result:
ok found '69.444444444', expected '69.444444444', error '0.000000000'
Test #18:
score: 0
Accepted
time: 0ms
memory: 3788kb
input:
3 -5 1 1 -4 -1 1 5 4 1 0 -2 0
output:
6.000000000000000
result:
ok found '6.000000000', expected '6.000000000', error '0.000000000'
Test #19:
score: 0
Accepted
time: 0ms
memory: 3828kb
input:
3 485996 232438 356271 686535 316095 -82403 -663737 -892162 -301128 -973876 -705273 342014
output:
949518700936.000000000000000
result:
ok found '949518700936.000000000', expected '949518700936.000000000', error '0.000000000'
Test #20:
score: 0
Accepted
time: 0ms
memory: 3748kb
input:
3 -307334 408041 -520618 -752353 -111541 -171569 622704 -397094 -856154 25489 -1939 897474
output:
431585140930.000000000000000
result:
ok found '431585140930.000000000', expected '431585140930.000000000', error '0.000000000'
Test #21:
score: 0
Accepted
time: 0ms
memory: 4032kb
input:
4 554523 -843525 434069 -518131 910677 518840 -857480 -612229 231960 965891 333430 -440474 -687304 726302 164236 659483
output:
2493690369944.078359365463257
result:
ok found '2493690369944.078125000', expected '2493690369944.078125000', error '0.000000000'
Test #22:
score: 0
Accepted
time: 0ms
memory: 4024kb
input:
4 269831 -364179 -591251 516327 -578364 795567 -872538 -766732 -896806 -70577 -998004 159063 -962947 -103040 -47465 -189048
output:
577576180387.100462496280670
result:
ok found '577576180387.100463867', expected '577576180387.100463867', error '0.000000000'
Test #23:
score: 0
Accepted
time: 0ms
memory: 3784kb
input:
10 -120900 371317 -965845 999010 105720 -738865 -573556 47269 959567 790508 -501437 -94217 900701 822342 916298 873194 351985 737907 523995 486812 224233 -197678 -958739 -157846 -571724 -329927 757807 -207627 -88478 -130810 866209 -314752 793192 -931648 355041 81069 -639238 265325 279197 331273
output:
2798954762226.748859882354736
result:
ok found '2798954762226.749023438', expected '2798954762226.749023438', error '0.000000000'
Test #24:
score: 0
Accepted
time: 1ms
memory: 4024kb
input:
37 -131846 614 862 168 -22220 13697 258 -10 26616 -348199 -210 1685 220 -329964 -150 1615 -13860 60289 170 -266 311355 32897 -2296 -138 366795 -11239 -2548 -475 555 281 504 -955 -2948 -280564 -6 1415 -27596 -307239 306 1525 -137036 8237 882 42 221496 -5164 -1834 -625 521411 -353499 -3164 1705 -76580...
output:
24803016000.000000007450581
result:
ok found '24803016000.000000000', expected '24803016000.000000000', error '0.000000000'
Test #25:
score: 0
Accepted
time: 1ms
memory: 3892kb
input:
73 -108673 389998 924 -1380 -302273 81982 1804 276 306682 -227947 -2168 1350 -308909 -182187 1828 1030 27322 -840937 -616 4130 -278557 500974 1716 -1788 -97 386944 -324 -1368 -184673 -501697 1324 2810 6822 15454 -288 1068 48166 -114427 -832 470 -11009 -829377 28 4090 297882 9934 -2136 1188 -14657 23...
output:
50487256537.649006638675928
result:
ok found '50487256537.649009705', expected '50487256537.649009705', error '0.000000000'
Test #26:
score: -100
Wrong Answer
time: 0ms
memory: 3848kb
input:
25 150 41240 110 -76 150 -71806 110 127 -135 100373 -117 -457 -135 -120701 -117 360 -135 -71304 -117 125 -135 -185507 -117 853 -135 -96206 -117 228 -135 -89846 -117 199 150 106114 110 -512 -135 -364728 -117 3338 -135 -240138 -117 1435 -135 -136915 -117 463 150 38262 110 -66 -135 -486593 -117 5988 15...
output:
3332940740.428720083553344
result:
wrong answer 1st numbers differ - expected: '212632515.0000000', found: '3332940740.4287200', error = '14.6746523'