Submission #70489612


Source Code Expand

#include <bits/stdc++.h>
#ifdef LOCAL
#include <debug.hpp>
#else
#define debug(...) void(0)
#endif

template <class T, class U = T> bool chmin(T& x, U&& y) { return y < x and (x = std::forward<U>(y), true); }

template <class T, class U = T> bool chmax(T& x, U&& y) { return x < y and (x = std::forward<U>(y), true); }

template <class T> void mkuni(std::vector<T>& v) {
    std::ranges::sort(v);
    auto result = std::ranges::unique(v);
    v.erase(result.begin(), result.end());
}

template <class T> int lwb(const std::vector<T>& v, const T& x) {
    return std::distance(v.begin(), std::ranges::lower_bound(v, x));
}

struct RandomNumberGenerator {
    std::mt19937 mt;

    RandomNumberGenerator() : mt(std::chrono::steady_clock::now().time_since_epoch().count()) {}

    uint32_t operator()(uint32_t a, uint32_t b) {
        std::uniform_int_distribution<uint32_t> dist(a, b - 1);
        return dist(mt);
    }

    uint32_t operator()(uint32_t b) { return (*this)(0, b); }

    template <typename T> void shuffle(std::vector<T>& v) {
        for (int i = 0; i < int(v.size()); i++) std::swap(v[i], v[(*this)(0, i + 1)]);
    }
};

struct RandomNumberGenerator64 {
    std::mt19937_64 mt;

    RandomNumberGenerator64() : mt(std::chrono::steady_clock::now().time_since_epoch().count()) {}

    uint64_t operator()(uint64_t a, uint64_t b) {
        std::uniform_int_distribution<uint64_t> dist(a, b - 1);
        return dist(mt);
    }

    uint64_t operator()(uint64_t b) { return (*this)(0, b); }

    template <typename T> void shuffle(std::vector<T>& v) {
        for (int i = 0; i < int(v.size()); i++) std::swap(v[i], v[(*this)(0, i + 1)]);
    }
};

using namespace std;

using ll = long long;

constexpr int MAX_ITR = 500;

void solve() {
    int N;
    cin >> N;
    vector<ll> x(N), y(N);
    for (int i = 0; i < N; i++) {
        cin >> x[i] >> y[i];
    }

    RandomNumberGenerator rng;
    for (int _ = 0; _ < MAX_ITR; _++) {
        int p = rng(N), q = (p + rng(1, N)) % N;
        ll a = y[q] - y[p], b = x[p] - x[q], c = x[q] * y[p] - x[p] * y[q];
        int cnt = 0;
        for (int i = 0; i < N; i++) {
            cnt += (a * x[i] + b * y[i] + c == 0);
        }
        if (cnt > N / 2) {
            cout << "Yes\n";
            cout << a << " " << b << " " << c << "\n";
            return;
        }
    }

    cout << "No\n";
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout << fixed << setprecision(15);

    solve();
    return 0;
}

Submission Info

Submission Time
Task E - Colinear
User rniya
Language C++ 23 (gcc 12.2)
Score 450
Code Size 2595 Byte
Status AC
Exec Time 308 ms
Memory 11096 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 450 / 450
Status
AC × 3
AC × 45
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 02_corner_1_00.txt, 02_corner_1_01.txt, 02_corner_1_02.txt, 02_corner_1_03.txt, 02_corner_1_04.txt, 02_corner_1_05.txt, 03_corner_2_00.txt, 03_corner_2_01.txt, 03_corner_2_02.txt, 03_corner_2_03.txt, 04_corner_3_00.txt, 04_corner_3_01.txt, 04_corner_3_02.txt, 04_corner_3_03.txt, 04_corner_3_04.txt, 04_corner_3_05.txt, 04_corner_3_06.txt, 04_corner_3_07.txt, 04_corner_3_08.txt, 04_corner_3_09.txt, 05_corner_4_00.txt, 05_corner_4_01.txt, 06_corner_5_00.txt, 06_corner_5_01.txt, 07_corner_6_00.txt, 07_corner_6_01.txt, 07_corner_6_02.txt, 07_corner_6_03.txt, 07_corner_6_04.txt, 07_corner_6_05.txt, 07_corner_6_06.txt, 07_corner_6_07.txt, 07_corner_6_08.txt, 07_corner_6_09.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3472 KiB
00_sample_01.txt AC 1 ms 3628 KiB
00_sample_02.txt AC 1 ms 3504 KiB
01_random_00.txt AC 48 ms 9144 KiB
01_random_01.txt AC 306 ms 10968 KiB
01_random_02.txt AC 59 ms 10916 KiB
01_random_03.txt AC 306 ms 10964 KiB
01_random_04.txt AC 58 ms 10952 KiB
01_random_05.txt AC 307 ms 10940 KiB
01_random_06.txt AC 308 ms 10968 KiB
01_random_07.txt AC 308 ms 10972 KiB
02_corner_1_00.txt AC 60 ms 10972 KiB
02_corner_1_01.txt AC 65 ms 10960 KiB
02_corner_1_02.txt AC 60 ms 11004 KiB
02_corner_1_03.txt AC 56 ms 10976 KiB
02_corner_1_04.txt AC 63 ms 10984 KiB
02_corner_1_05.txt AC 60 ms 10964 KiB
03_corner_2_00.txt AC 60 ms 11000 KiB
03_corner_2_01.txt AC 55 ms 11036 KiB
03_corner_2_02.txt AC 62 ms 10864 KiB
03_corner_2_03.txt AC 60 ms 10868 KiB
04_corner_3_00.txt AC 1 ms 3560 KiB
04_corner_3_01.txt AC 1 ms 3492 KiB
04_corner_3_02.txt AC 1 ms 3504 KiB
04_corner_3_03.txt AC 1 ms 3504 KiB
04_corner_3_04.txt AC 1 ms 3576 KiB
04_corner_3_05.txt AC 1 ms 3576 KiB
04_corner_3_06.txt AC 1 ms 3496 KiB
04_corner_3_07.txt AC 1 ms 3628 KiB
04_corner_3_08.txt AC 1 ms 3500 KiB
04_corner_3_09.txt AC 1 ms 3468 KiB
05_corner_4_00.txt AC 60 ms 10964 KiB
05_corner_4_01.txt AC 58 ms 11096 KiB
06_corner_5_00.txt AC 2 ms 3524 KiB
06_corner_5_01.txt AC 1 ms 3508 KiB
07_corner_6_00.txt AC 61 ms 11040 KiB
07_corner_6_01.txt AC 59 ms 10916 KiB
07_corner_6_02.txt AC 57 ms 10868 KiB
07_corner_6_03.txt AC 60 ms 11028 KiB
07_corner_6_04.txt AC 59 ms 10956 KiB
07_corner_6_05.txt AC 59 ms 11024 KiB
07_corner_6_06.txt AC 60 ms 11040 KiB
07_corner_6_07.txt AC 61 ms 10924 KiB
07_corner_6_08.txt AC 62 ms 10968 KiB
07_corner_6_09.txt AC 57 ms 10920 KiB