Submission #1218986

#TimeUsernameProblemLanguageResultExecution timeMemory
1218986takoshanavaSquare or Rectangle? (NOI19_squarerect)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#include "squarerect.h"
#define int long long
#define pb push_back
#define fs first
#define sc second
using namespace std;

bool am_i_square(int N, int Q) {
    int used = 0;
    int mn = (N * N + 24) / 25;
    int ms = (int)ceil(sqrt(mn));

    int x = N, y = N;
    bool found = false;
    for (int i = ms; i <= N and !found; i += ms) {
        for (int j = ms; j < i and !found; j += ms) {
            if (used++, inside_shape(i, j)) {
                x = i; y = j;
                found = true;
                break;
            }
            if (used++, inside_shape(j, i)) {
                x = j; y = i;
                found = true;
                break;
            }
        }
        if (found) break;
        if (N < i + ms) break;
        if (used++, inside_shape(i, i)) {
            x = i; y = i;
            found = true;
            break;
        }
    }

    int l = x - ms + 1, r = min(x, N - ms + 2);
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (used++, inside_shape(mid, y)) r = mid;
        else l = mid + 1;
    }
    x = l;

    if (N < x + ms - 1) return false;

    l = y - ms + 1, r = min(y, N - ms + 2);
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (used++, inside_shape(x, mid)) r = mid;
        else l = mid + 1;
    }
    y = l;

    if (N < y + ms - 1) return false;

    l = ms - 1;
    r = min(N - x, N - y) + 1;
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (used++, !inside_shape(x + mid, y + mid)) r = mid;
        else l = mid + 1;
    }

    int side = l;
    bool valid = side != ms - 1;

    if (valid and x + side - 1 <= N and y + side <= N)
        valid &= !inside_shape(x + side - 1, y + side);
    if (valid and x + side <= N and y + side - 1 <= N)
        valid &= !inside_shape(x + side, y + side - 1);

    return valid;
}

Compilation message (stderr)

/usr/bin/ld: /tmp/ccH0bOdr.o: in function `main':
grader.cpp:(.text.startup+0x87): undefined reference to `am_i_square(int, int)'
collect2: error: ld returned 1 exit status