提出 #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 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| 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 |