提出 #61230752


ソースコード 拡げる

// Go in my style.
// Not afraid to dark.

#include <bits/stdc++.h>
using namespace std;

clock_t sttime;
#define STCLOCK sttime = clock ();
#define TIMENOW fprintf (stderr, "\nNOW TIME COSSEMED: %0.4lf\n", 1.0 * (clock () - sttime) / CLOCKS_PER_SEC);
#define inline __inline__ __attribute__ ((always_inline))

namespace io {
    int read_pos, read_dt; char read_char;
    inline int read (int &p = read_pos){
        p = 0, read_dt = 1; read_char = getchar ();
        while (! isdigit (read_char)){
            if (read_char == '-')
                read_dt = - 1;
            read_char = getchar ();
        }
        while (isdigit (read_char)){
            p = (p << 1) + (p << 3) + read_char - 48;
            read_char = getchar ();
        }
        return p = p * read_dt;
    }
    int write_sta[65], write_top;
    inline void write (int x){
        if (x < 0)
            putchar ('-'), x = - x;
        write_top = 0;
        do
            write_sta[write_top ++] = x % 10, x /= 10;
        while (x);
        while (write_top)
            putchar (write_sta[-- write_top] + 48);
    }
}

inline int lowbit (int x){ return x & - x; }
#define log2_(x) (31 ^ __builtin_clz (x))

const int N = 6e5;
int n, m, a[N + 5], lb[N + 5], rb[N + 5];
vector < int > mem[N + 5], fac[N + 5], dv[N + 5];

signed main (){
    STCLOCK

    io::read (n), io::read (m);
    for (int i = 1;i <= n;++ i)
        io::read (a[i]), mem[a[i] / lowbit (a[i])].push_back (log2_ (lowbit (a[i])));
    for (int i = 1;i <= (m << 1);i += 2){
        if (mem[i].empty ()){
            for (int i = 1;i <= n;++ i) puts ("No");
            return 0;
        }
        sort (mem[i].begin (), mem[i].end ());
        mem[i].erase (unique (mem[i].begin (), mem[i].end ()), mem[i].end ());
        for (int j = 3;i * j <= (m << 1);j += 2)
            fac[i * j].push_back (i), dv[i].push_back (i * j);
    }
    for (int i = 1;i <= (m << 1);i += 2){
        rb[i] = mem[i].back ();
        for (int x : fac[i]) rb[i] = min (rb[i], rb[x] - 1);
        if (rb[i] < mem[i][0]) rb[i] = - 1;
        else rb[i] = *(-- upper_bound (mem[i].begin (), mem[i].end (), rb[i]));
        if (rb[i] < 0){
            for (int i = 1;i <= n;++ i) puts ("No");
            return 0;
        }
    }
    for (int i = (m << 1) - 1;i >= 1;i -= 2){
        lb[i] = mem[i][0];
        for (int x : dv[i]) lb[i] = max (lb[i], lb[x] + 1);
        if (lb[i] > mem[i].back ()) lb[i] = 31;
        else lb[i] = *lower_bound (mem[i].begin (), mem[i].end (), lb[i]);
    }
    for (int i = 1, x, y;i <= n;++ i){
        x = a[i] / lowbit (a[i]), y = log2_ (lowbit (a[i]));
        if (lb[x] <= y && y <= rb[x]) puts ("Yes");
        else puts ("No");
    }

    TIMENOW
    return 0;
}

提出情報

提出日時
問題 D - Non-divisible Set
ユーザ good88
言語 C++ 20 (gcc 12.2)
得点 700
コード長 2816 Byte
結果 AC
実行時間 176 ms
メモリ 79748 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 700 / 700
結果
AC × 3
AC × 47
セット名 テストケース
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 01-random-001.txt, 01-random-002.txt, 01-random-003.txt, 01-random-004.txt, 01-random-005.txt, 01-random-006.txt, 01-random-007.txt, 01-random-008.txt, 01-random-009.txt, 01-random-010.txt, 01-random-011.txt, 01-random-012.txt, 01-random-013.txt, 01-random-014.txt, 01-random-015.txt, 01-random-016.txt, 01-random-017.txt, 01-random-018.txt, 01-random-019.txt, 01-random-020.txt, 02-max-001.txt, 02-max-002.txt, 02-max-003.txt, 02-max-004.txt, 02-max-005.txt, 02-max-006.txt, 02-max-007.txt, 02-max-008.txt, 02-max-009.txt, 02-max-010.txt, 02-max-011.txt, 02-max-012.txt, 03-only-001.txt, 03-only-002.txt, 03-only-003.txt, 03-only-004.txt, 03-only-005.txt, 03-only-006.txt, 03-only-007.txt, 03-only-008.txt, 04-hand-001.txt, 04-hand-002.txt, 04-hand-003.txt, 04-hand-004.txt
ケース名 結果 実行時間 メモリ
00-sample-001.txt AC 8 ms 3820 KiB
00-sample-002.txt AC 7 ms 3548 KiB
00-sample-003.txt AC 8 ms 3872 KiB
01-random-001.txt AC 164 ms 73476 KiB
01-random-002.txt AC 86 ms 43608 KiB
01-random-003.txt AC 128 ms 60260 KiB
01-random-004.txt AC 85 ms 44380 KiB
01-random-005.txt AC 131 ms 63396 KiB
01-random-006.txt AC 111 ms 55708 KiB
01-random-007.txt AC 58 ms 31632 KiB
01-random-008.txt AC 154 ms 73744 KiB
01-random-009.txt AC 138 ms 67264 KiB
01-random-010.txt AC 145 ms 70132 KiB
01-random-011.txt AC 119 ms 57476 KiB
01-random-012.txt AC 165 ms 74116 KiB
01-random-013.txt AC 154 ms 74316 KiB
01-random-014.txt AC 132 ms 60348 KiB
01-random-015.txt AC 88 ms 44964 KiB
01-random-016.txt AC 89 ms 45380 KiB
01-random-017.txt AC 149 ms 70620 KiB
01-random-018.txt AC 73 ms 38896 KiB
01-random-019.txt AC 122 ms 59952 KiB
01-random-020.txt AC 134 ms 64656 KiB
02-max-001.txt AC 169 ms 78580 KiB
02-max-002.txt AC 164 ms 78840 KiB
02-max-003.txt AC 163 ms 78420 KiB
02-max-004.txt AC 176 ms 79160 KiB
02-max-005.txt AC 170 ms 79352 KiB
02-max-006.txt AC 164 ms 78768 KiB
02-max-007.txt AC 163 ms 78872 KiB
02-max-008.txt AC 164 ms 78388 KiB
02-max-009.txt AC 167 ms 78656 KiB
02-max-010.txt AC 167 ms 79256 KiB
02-max-011.txt AC 172 ms 79580 KiB
02-max-012.txt AC 173 ms 79276 KiB
03-only-001.txt AC 136 ms 71352 KiB
03-only-002.txt AC 114 ms 63084 KiB
03-only-003.txt AC 109 ms 57812 KiB
03-only-004.txt AC 50 ms 30176 KiB
03-only-005.txt AC 104 ms 59116 KiB
03-only-006.txt AC 73 ms 43524 KiB
03-only-007.txt AC 45 ms 27032 KiB
03-only-008.txt AC 51 ms 31260 KiB
04-hand-001.txt AC 7 ms 3852 KiB
04-hand-002.txt AC 173 ms 79748 KiB
04-hand-003.txt AC 59 ms 31812 KiB
04-hand-004.txt AC 96 ms 49068 KiB