답안 #382044

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
382044 2021-03-26T10:18:09 Z Vimmer Vepar (COCI21_vepar) C++14
30 / 70
1500 ms 249744 KB
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>

#pragma GCC optimize("Ofast")
#pragma GCC optimize("-O3")
#pragma GCC optimize("unroll-loops")

#define N 100500
#define NN 10000005
#define PB push_back
#define endl '\n'
#define pri(x) cout << x << endl
#define _ << " " <<
#define sz(x) int(x.size())
#define F first
#define S second
#define all(x) x.begin(), x.end()

using namespace std;
//using namespace __gnu_pbds;

typedef long long ll;

//typedef tree <int, null_type, less_equal <int>, rb_tree_tag, tree_order_statistics_node_update> ord_set;

vector <int> vr[NN], pr;

int mk[NN], id;

bool mkr[NN];

int kol[NN];

int main()
{
    ios_base::sync_with_stdio(0); istream::sync_with_stdio(0); cin.tie(0); cout.tie(0);

//    freopen("1.in", "r", stdin);

    for (int i = 2; i < NN; i++)
    {
        if (mkr[i]) continue;

        pr.PB(i);

        for (ll j = 1ll * i * i; j < NN; j += i)
            mkr[j] = 1;
    }

    int q;

    cin >> q;

    for (; q > 0; q--)
    {
        int a, b, c, d;

        cin >> a >> b >> c >> d;

        if (c <= a && b <= d)
        {
            pri("DA");

            continue;
        }

        if (a < c && d < b)
        {
            pri("NE");

            continue;
        }

        if (a <= c && c <= b && b <= d)
        {
            int l = c;

            c = b + 1;

            b = l - 1;
        }

        id++;

        for (int i = c; i <= d; i++)
        {
            if (sz(vr[i]) == 0)
            {
                int x = i;

                for (auto it : pr)
                {
                    if (x < it) break;

                    while (x % it == 0)
                    {
                        x /= it;

                        vr[i].PB(it);
                    }
                }
            }

            for (auto it : vr[i])
            {
                if (mk[it] != id)
                {
                    mk[it] = id;

                    kol[it] = 0;
                }

                kol[it]++;
            }
        }

        bool gd = 1;

        for (int i = a; i <= b && gd; i++)
            {
                if (sz(vr[i]) == 0)
                {
                    int x = i;

                    for (auto it : pr)
                    {
                        if (x < it) break;

                        while (x % it == 0)
                        {
                            x /= it;

                            vr[i].PB(it);
                        }
                    }
                }

                for (auto it : vr[i])
                {
                    if (mk[it] != id)
                    {
                        gd = 0;

                        break;
                    }

                    kol[it]--;

                    if (kol[it] == -1)
                    {
                        gd = 0;

                        break;
                    }
                }
            }

        if (gd)
        {
            pri("DA");
        }
        else
        {
            pri("NE");
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Correct 242 ms 249188 KB Output is correct
2 Correct 245 ms 249316 KB Output is correct
3 Correct 250 ms 249316 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 240 ms 249268 KB Output is correct
2 Correct 252 ms 249188 KB Output is correct
3 Correct 261 ms 249188 KB Output is correct
4 Correct 241 ms 249208 KB Output is correct
5 Correct 254 ms 249188 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 258 ms 249316 KB Output is correct
2 Correct 241 ms 249188 KB Output is correct
3 Correct 255 ms 249188 KB Output is correct
4 Correct 239 ms 249188 KB Output is correct
5 Correct 246 ms 249316 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1620 ms 249436 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1572 ms 249744 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1589 ms 249644 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 1562 ms 249612 KB Time limit exceeded
2 Halted 0 ms 0 KB -