QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#202111#2350. Integer Cow8BQubeTL 1923ms3872kbC++202.2kb2023-10-05 19:28:132023-10-05 19:28:13

Judging History

你现在查看的是最新测评结果

  • [2023-10-05 19:28:13]
  • 评测
  • 测评结果:TL
  • 用时:1923ms
  • 内存:3872kb
  • [2023-10-05 19:28:13]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
#define X first
#define Y second
#define pb push_back
#define SZ(a) ((int)a.size())
#define ALL(v) v.begin(), v.end()

#define double __float128

typedef pair<double, double> pdd;

pll operator+(const pll &a, const pll &b) { return pll(a.X + b.X, a.Y + b.Y); }
pll operator-(const pll &a, const pll &b) { return pll(a.X - b.X, a.Y - b.Y); }
pll operator*(const pll &a, const ll &b) { return pll(a.X * b, a.Y * b); }
pdd operator/(const pdd &a, const double &b) { return pdd(a.X / b, a.Y / b); }
ll dis2(const pll &a, const pll &b) { return (a.X - b.X) * (a.X - b.X) + (a.Y - b.Y) * (a.Y - b.Y); }

int main() {
    ios::sync_with_stdio(0), cin.tie(0);
    int t;
    cin >> t;
    while (t--) {
        pll c, a;
        ll r;
        cin >> c.X >> c.Y >> r >> a.X >> a.Y;
        ll mi = dis2(a, c);
        if (mi <= r * r) {
            cout << "0\n";
            cout << a.X << " " << a.Y << "\n";
            continue;
        }
        pll best = c;

        auto check = [&](pll p) {
            if (dis2(p, c) > r * r) return;
            ll d = dis2(p, a);
            if (d < mi) mi = d, best = p;
        };

        auto spread = [&](pll p) {
            for (int i = 0; i <= 2000; ++i) {
                for (int j = 0; j <= 2000; ++j) {
                    check(pll(p.X + i, p.Y + j));
                    check(pll(p.X - i, p.Y + j));
                    check(pll(p.X + i, p.Y - j));
                    check(pll(p.X - i, p.Y - j));
                }
            }
        };

        if (r <= 100) spread(c);
        else {
            /*double lft = 0, rgt = 1;
            for (int i = 0; i < 100; ++i) {
                double mid = (lft + rgt) / 2;
                pdd pt = a * mid + c * (1 - mid);
                if (dis2(pt, c) <= r * r) lft = mid;
                else rgt = mid;
            }
            pdd pt = a * rgt + c * (1 - rgt);*/
            pdd pp = (a - c) * r / sqrtl(dis2(a, c));
            pll pt;
            pt.X = roundl(pp.X + c.X), pt.Y = roundl(pp.Y + c.Y);
            spread(pt);
        }

        cout << "1\n";
        cout << a.X << " " << a.Y << " " << best.X << " " << best.Y << "\n";
    }
}

详细

Test #1:

score: 100
Accepted
time: 41ms
memory: 3632kb

input:

3
1 2 1 1 2
3 2 5 -10 3
0 0 1 10 0

output:

0
1 2
1
-10 3 -2 2
1
10 0 1 0

result:

ok correct (3 test cases)

Test #2:

score: 0
Accepted
time: 1ms
memory: 3872kb

input:

1
0 0 1 0 0

output:

0
0 0

result:

ok correct (1 test case)

Test #3:

score: 0
Accepted
time: 1648ms
memory: 3540kb

input:

100
-1 0 2 -3 -2
0 -2 2 -2 0
2 -1 1 0 1
-1 -3 1 -1 0
-1 2 2 -1 -1
2 -2 2 0 -3
-2 -3 2 -3 -2
0 1 2 2 1
-1 0 1 -2 -2
2 -2 2 -1 -2
1 2 2 -2 2
-1 2 1 -1 2
-2 1 2 -3 -2
-1 1 1 -1 1
2 2 1 1 -3
2 0 1 -2 -1
-1 2 1 -2 0
2 -2 2 -2 -1
-2 -2 1 1 -2
-1 1 2 2 1
2 -3 1 0 -1
-3 -3 2 2 -1
2 1 1 -1 1
-3 -2 1 -2 -3
0 ...

output:

1
-3 -2 -2 -1
1
-2 0 -1 -1
1
0 1 2 0
1
-1 0 -1 -2
1
-1 -1 -1 0
1
0 -3 1 -3
0
-3 -2
0
2 1
1
-2 -2 -1 -1
1
-1 -2 0 -2
1
-2 2 -1 2
0
-1 2
1
-3 -2 -2 -1
0
-1 1
1
1 -3 2 1
1
-2 -1 1 0
1
-2 0 -1 1
1
-2 -1 0 -2
1
1 -2 -1 -2
1
2 1 1 1
1
0 -1 2 -2
1
2 -1 -1 -3
1
-1 1 1 1
1
-2 -3 -3 -3
0
-2 -2
0
-2 -2
0
1 -1
...

result:

ok correct (100 test cases)

Test #4:

score: 0
Accepted
time: 1923ms
memory: 3576kb

input:

100
-5 9 1 -2 -7
3 1 6 9 2
-2 -1 2 -7 3
-10 -8 7 -8 6
0 3 9 -6 -7
6 4 9 -1 4
8 6 7 -7 7
3 -7 7 2 0
-5 -1 6 -7 -7
-5 8 7 -9 -6
-6 -5 5 -10 -9
-7 1 9 7 -2
-4 9 4 8 3
3 -9 6 2 -2
-1 -7 3 -8 2
-2 -5 4 -1 0
1 2 9 -5 5
0 9 5 -4 -1
-10 8 2 -3 -7
-8 -3 3 2 -3
3 3 7 -4 6
6 0 6 -3 5
-7 5 9 9 9
2 0 2 8 -10
2 1...

output:

1
-2 -7 -5 8
1
9 2 8 2
1
-7 3 -3 0
1
-8 6 -10 -1
1
-6 -7 -4 -5
0
-1 4
1
-7 7 1 6
1
2 0 3 0
1
-7 -7 -7 -6
1
-9 -6 -5 1
1
-10 -9 -9 -9
1
7 -2 2 1
1
8 3 -1 7
1
2 -2 3 -3
1
-8 2 -3 -5
1
-1 0 -2 -1
0
-5 5
1
-4 -1 -3 5
1
-3 -7 -10 6
1
2 -3 -5 -3
1
-4 6 -3 6
1
-3 5 1 3
1
9 9 1 9
1
8 -10 2 -2
1
7 -1 5 1
0
2...

result:

ok correct (100 test cases)

Test #5:

score: 0
Accepted
time: 1705ms
memory: 3676kb

input:

100
-52 -13 72 44 58
79 -58 32 60 11
-50 21 75 95 65
-37 -61 21 -74 -40
0 -88 14 11 -49
10 -80 46 79 -17
75 -94 90 61 -34
-80 19 85 -7 -20
-72 42 56 67 -89
21 51 39 20 88
82 32 56 88 -82
3 51 31 -45 -53
50 12 91 9 46
-45 29 25 76 27
-19 -14 81 22 97
5 93 35 98 64
54 90 88 -100 63
-60 -18 81 -20 8
34...

output:

1
44 58 7 28
1
60 11 68 -28
1
95 65 22 42
1
-74 -40 -54 -49
1
11 -49 5 -75
1
79 -17 43 -48
0
61 -34
0
-7 -20
1
67 -89 -30 5
0
20 88
1
88 -82 82 -24
1
-45 -53 -10 23
0
9 46
1
76 27 -20 29
1
22 97 9 62
1
98 64 39 85
1
-100 63 -33 77
0
-20 8
1
62 16 46 51
1
-46 66 -79 -27
1
62 -91 -11 -54
1
-55 -54 73 ...

result:

ok correct (100 test cases)

Test #6:

score: 0
Accepted
time: 1855ms
memory: 3636kb

input:

100
-14 48 115 -133 160
80 40 30 181 139
114 -109 102 -111 -14
-51 175 113 40 -116
-44 -171 69 6 -128
18 -23 159 94 170
-150 71 199 -167 -181
82 173 50 -138 41
-27 -126 119 195 134
-129 16 169 -103 51
183 136 117 -196 54
25 61 27 166 12
-156 63 199 -8 -56
-143 138 31 -137 125
48 16 44 -83 37
150 -16...

output:

1
-133 160 -98 126
1
181 139 102 60
1
-111 -14 19 -72
1
40 -116 -18 67
0
6 -128
1
94 170 76 125
1
-167 -181 -167 -127
1
-138 41 40 146
1
195 134 53 -38
0
-103 51
1
-196 54 69 110
1
166 12 50 51
0
-8 -56
0
-137 125
1
-83 37 5 25
1
-71 -195 9 -183
1
-77 -188 -51 120
1
-88 135 -100 -179
0
170 90
1
-25 ...

result:

ok correct (100 test cases)

Test #7:

score: 0
Accepted
time: 1901ms
memory: 3580kb

input:

100
30 194 241 273 -11
476 -181 37 -18 -139
-162 496 295 113 250
-413 467 26 -100 312
-322 -120 423 -86 222
464 231 266 -421 497
249 -467 327 -183 -486
-316 486 468 -295 -286
92 141 487 -146 -13
108 -300 14 318 17
229 -180 49 -247 -464
-385 326 56 -493 62
-365 349 114 -258 293
44 -443 26 -139 -313
6...

output:

1
273 -11 217 42
1
-18 -139 439 -181
1
113 250 60 302
1
-100 312 -389 457
0
-86 222
1
-421 497 208 303
1
-183 -486 -77 -486
1
-295 -286 -316 18
0
-146 -13
1
318 17 115 -288
1
-247 -464 187 -205
1
-493 62 -408 275
1
-258 293 -264 297
1
-139 -313 23 -428
1
-458 -334 55 71
1
210 -353 304 215
0
-118 -26...

result:

ok correct (100 test cases)

Test #8:

score: 0
Accepted
time: 1711ms
memory: 3808kb

input:

100
411 -186 278 885 -994
-930 792 129 -912 -596
879 -250 54 312 -682
-712 -577 304 -473 409
109 -353 664 -141 -316
117 691 571 -217 166
-596 974 792 -326 630
-15 497 654 -575 -991
-714 -567 262 847 -440
182 29 60 -584 -920
-68 -858 810 -351 -901
-429 -633 975 -244 814
881 -213 818 -870 425
173 639 ...

output:

1
885 -994 546 -429
1
-912 -596 -930 663
1
312 -682 838 -285
1
-473 409 -643 -281
0
-141 -316
1
-217 166 -189 209
0
-326 630
1
-575 -991 -248 -114
1
847 -440 -453 -545
1
-584 -920 146 -19
0
-351 -901
1
-244 814 -305 334
1
-870 425 111 63
0
-124 917
1
-109 987 80 -268
1
-421 899 421 376
1
153 -591 68...

result:

ok correct (100 test cases)

Test #9:

score: -100
Time Limit Exceeded

input:

100
190 562 152 560 564
-732 968 55 -887 965
-370 982 376 324 982
-263 -163 232 381 -165
-95 -654 238 258 -652
379 -43 668 -521 -36
884 782 580 267 786
-7 907 494 -802 908
970 -214 135 356 -209
410 40 139 173 42
-908 -832 24 -539 -835
806 -288 25 680 -296
-906 166 22 -873 165
-628 459 200 -122 454
-...

output:


result: