Submission #884340

# Submission time Handle Problem Language Result Execution time Memory
884340 2023-12-07T07:28:59 Z noiaint Izvanzemaljci (COI21_izvanzemaljci) C++17
Compilation error
0 ms 0 KB
#include <bits/stdc++.h>
#define int int64_t

using namespace std;

#ifdef LOCAL
#include "debug.h"
#else
#define debug(...) 42
#endif

#define file ""

#define mp make_pair
#define fi first
#define se second
#define all(x) x.begin(), x.end()

#define bit(x) (1LL << (x))
#define getbit(x, i) (((x) >> (i)) & 1)
#define popcount __builtin_popcountll

mt19937_64 rd(chrono::steady_clock::now().time_since_epoch().count());
int rand(int l, int r) {
    return l + rd() % (r - l + 1);
}

const int N = 1e6 + 5;
const int mod = (int)1e9 + 7; // 998244353;
const int lg = 25; // lg + 1
const int oo = 1e9;
const long long ooo = 1e18;

template<class X, class Y> bool mini(X &a, Y b) {
    return a > b ? (a = b, true) : false;
}
template<class X, class Y> bool maxi(X &a, Y b) {
    return a < b ? (a = b, true) : false;
}
void add(int &a, int b) {
    a += b;
    if (a >= mod) a -= mod;
    if (a < 0) a += mod;
}

int n, k;
pair<int, int> a[N];

namespace task1 {

void solve() {
    int maxx, maxy, minx, miny;
    maxx = maxy = -oo;
    minx = miny = oo;
    for (int i = 1; i <= n; ++i) {
        int x, y;
        tie(x, y) = a[i];
        maxi(maxx, x);
        maxi(maxy, y);
        mini(minx, x);
        mini(miny, y);
    }

    int w = maxx - minx;
    int h = maxy - miny;

    int l = max(w, h);
    l = max(l, 1LL);

    debug(w, h);

    cout << minx << ' ' << miny << ' ' << l;

}

}

namespace task2 {

int pre_min_x[N], pre_min_y[N], pre_max_x[N], pre_max_y[N];
int suf_min_x[N], suf_min_y[N], suf_max_x[N], suf_max_y[N];

array<int, 3> res[3];

void solve() {

    sort(a + 1, a + n + 1);

    pre_min_x[0] = pre_min_y[0] = suf_min_x[n + 1] = suf_min_y[n + 1] = ooo;
    pre_max_x[0] = pre_max_y[0] = suf_max_x[n + 1] = suf_max_y[n + 1] = -ooo;

    for (int i = 1; i <= n; ++i) {
        int x, y;
        tie(x, y) = a[i];

        pre_min_x[i] = min(pre_min_x[i - 1], x);
        pre_max_x[i] = max(pre_max_x[i - 1], x);
        pre_min_y[i] = min(pre_min_y[i - 1], y);
        pre_max_y[i] = max(pre_max_y[i - 1], y);
    }
    for (int i = n; i >= 1; --i) {
        int x, y;
        tie(x, y) = a[i];

        suf_min_x[i] = min(suf_min_x[i + 1], x);
        suf_max_x[i] = max(suf_max_x[i + 1], x);
        suf_min_y[i] = min(suf_min_y[i + 1], y);
        suf_max_y[i] = max(suf_max_y[i + 1], y);
    }

    res[0][2] = res[1][2] = ooo;

    for (int i = 1; i < n; ++i) {
        // first photo
        int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
        int x1 = pre_min_x[i];
        int y1 = pre_min_y[i];

        // second photo
        int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
        int x2 = suf_min_x[i + 1];
        int y2 = suf_min_y[i + 1];

        // get best
        if (max(l1, l2) < max(res[0][2], res[1][2])) {
            res[0] = {x1, y1, l1};
            res[1] = {x2, y2, l2};
        }
    }

    for (int i = 0; i < 2; ++i) {
        for (int x : res[i]) cout << x << ' ';
        cout << '\n';
    }
}

}

void process() {
    cin >> n >> k;
    for (int i = 1; i <= n; ++i) cin >> a[i].fi >> a[i].se;

    if (k == 1) {task1::solve(); return;}
    if (k == 2) {task2::solve(); return;}
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);

    #ifdef LOCAL
    freopen("input.txt", "r", stdin);
    #else
    // freopen(file".inp", "r", stdin);
    // freopen(file".out", "w", stdout);
    #endif

    int tc = 1;
    // cin >> tc;

    while (tc--) {
        process();
    }

    return 0;
}

/*

*/

Compilation message

izvanzemaljci.cpp: In function 'void task1::solve()':
izvanzemaljci.cpp:68:19: error: no matching function for call to 'max(int64_t&, long long int)'
   68 |     l = max(l, 1LL);
      |                   ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:68:19: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
   68 |     l = max(l, 1LL);
      |                   ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:68:19: note:   deduced conflicting types for parameter 'const _Tp' ('long int' and 'long long int')
   68 |     l = max(l, 1LL);
      |                   ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:68:19: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
   68 |     l = max(l, 1LL);
      |                   ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:68:19: note:   mismatched types 'std::initializer_list<_Tp>' and 'long int'
   68 |     l = max(l, 1LL);
      |                   ^
izvanzemaljci.cpp:9:20: warning: statement has no effect [-Wunused-value]
    9 | #define debug(...) 42
      |                    ^~
izvanzemaljci.cpp:70:5: note: in expansion of macro 'debug'
   70 |     debug(w, h);
      |     ^~~~~
izvanzemaljci.cpp: In function 'void task2::solve()':
izvanzemaljci.cpp:115:85: error: no matching function for call to 'max(<brace-enclosed initializer list>)'
  115 |         int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
      |                                                                                     ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:115:85: note:   candidate expects 2 arguments, 1 provided
  115 |         int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
      |                                                                                     ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:115:85: note:   candidate expects 3 arguments, 1 provided
  115 |         int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
      |                                                                                     ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:115:85: note:   deduced conflicting types for parameter '_Tp' ('long long int' and 'long int')
  115 |         int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
      |                                                                                     ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:115:85: note:   deduced conflicting types for parameter '_Tp' ('long long int' and 'long int')
  115 |         int l1 = max({1LL, pre_max_x[i] - pre_min_x[i], pre_max_y[i] - pre_min_y[i]});
      |                                                                                     ^
izvanzemaljci.cpp:120:101: error: no matching function for call to 'max(<brace-enclosed initializer list>)'
  120 |         int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
      |                                                                                                     ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:120:101: note:   candidate expects 2 arguments, 1 provided
  120 |         int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
      |                                                                                                     ^
In file included from /usr/include/c++/10/bits/specfun.h:45,
                 from /usr/include/c++/10/cmath:1927,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:41,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:120:101: note:   candidate expects 3 arguments, 1 provided
  120 |         int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
      |                                                                                                     ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:120:101: note:   deduced conflicting types for parameter '_Tp' ('long long int' and 'long int')
  120 |         int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
      |                                                                                                     ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from izvanzemaljci.cpp:1:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
izvanzemaljci.cpp:120:101: note:   deduced conflicting types for parameter '_Tp' ('long long int' and 'long int')
  120 |         int l2 = max({1LL, suf_max_x[i + 1] - suf_min_x[i + 1], suf_max_y[i + 1] - suf_min_y[i + 1]});
      |                                                                                                     ^