提出 #1204555
ソースコード 拡げる
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
static const int NMAX = 200000;
static const int MMAX = 18;
static int N, M, X[NMAX];
static int A[1 << (1 + MMAX)];
static int B[1 << (1 + MMAX)];
static int Y[NMAX + 1][1 + MMAX];
static void solve(int *C) {
for(int m = 0; m <= M; m++) Y[N][m] = N;
for(int i = N; --i > 0; ) {
for(int m = 0; m <= M; m++) Y[i][m] = (m < X[i] ? i : Y[i + 1][m]);
}
for(int mask = 1; mask < (1 << (1 + M)); mask++) {
int ret = 0;
for(int i = 0; i <= M; i++) {
if((mask & (1 << i)) == 0) continue;
auto tmp = C[mask ^ (1 << i)];
if(tmp == N) {
ret = N;
break;
}
tmp = Y[tmp + 1][i];
if(tmp > ret) {
ret = tmp;
if(ret == N) break;
}
}
C[mask] = ret;
}
}
int main() {
scanf("%d%d", &N, &M);
for(int i = 0; i < N; i++) scanf("%d", X + i);
{
vector<int> v;
for(; ; M >>= 1) {
v.push_back(M);
if(M == 0) break;
}
M = v.size() - 1;
reverse(begin(v), end(v));
for(int i = N; --i > 0; ) {
X[i] = lower_bound(begin(v), end(v), X[i] - X[i - 1]) - begin(v);
}
}
solve(A);
if(A[(1 << (1 + M)) - 1] != N) {
for(int i = 0; i < N; i++) puts("Impossible");
} else {
vector<int> v;
for(int i = 0; i < N; ) {
auto j = Y[i + 1][M];
v.push_back(j - i);
i = j;
}
reverse(X + 1, X + N);
solve(B);
int l = 0;
for(auto s : v) {
auto z = false;
for(int i = 0; i < (1 << M); i++) {
if(A[i] < l) continue;
auto j = ((1 << M) - 1) ^ i;
if(B[j] >= N - (l + s)) {
z = true;
break;
}
}
for(int i = 0; i < s; i++) puts(z ? "Possible" : "Impossible");
l += s;
}
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Camel and Oases |
| ユーザ | arosusti |
| 言語 | C++14 (GCC 5.4.1) |
| 得点 | 1000 |
| コード長 | 1744 Byte |
| 結果 | AC |
| 実行時間 | 117 ms |
| メモリ | 22144 KiB |
コンパイルエラー
./Main.cpp: In function ‘int main()’:
./Main.cpp:39:23: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d", &N, &M);
^
./Main.cpp:40:47: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
for(int i = 0; i < N; i++) scanf("%d", X + i);
^
ジャッジ結果
| セット名 | Sample | All | ||||
|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 1000 / 1000 | ||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | 00_example_01.txt, 00_example_02.txt, 00_example_03.txt |
| All | 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, 31.txt, 32.txt, 33.txt, 34.txt, 35.txt, 36.txt, 37.txt, 38.txt, 39.txt, 40.txt, 41.txt, 42.txt, 43.txt, 44.txt, 45.txt, 46.txt, 47.txt, 48.txt, 49.txt, 50.txt, 51.txt, 52.txt, 53.txt, 54.txt, 55.txt, 56.txt, 57.txt, 58.txt, 59.txt, 60.txt, 61.txt, 62.txt, 63.txt, 64.txt, 65.txt, 66.txt, 67.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| 00_example_01.txt | AC | 2 ms | 4352 KiB |
| 00_example_02.txt | AC | 2 ms | 4352 KiB |
| 00_example_03.txt | AC | 2 ms | 4352 KiB |
| 01.txt | AC | 77 ms | 4864 KiB |
| 02.txt | AC | 19 ms | 4352 KiB |
| 03.txt | AC | 76 ms | 4864 KiB |
| 04.txt | AC | 19 ms | 4352 KiB |
| 05.txt | AC | 71 ms | 4864 KiB |
| 06.txt | AC | 84 ms | 9344 KiB |
| 07.txt | AC | 23 ms | 6016 KiB |
| 08.txt | AC | 81 ms | 6528 KiB |
| 09.txt | AC | 24 ms | 6272 KiB |
| 10.txt | AC | 73 ms | 5760 KiB |
| 11.txt | AC | 22 ms | 4352 KiB |
| 12.txt | AC | 40 ms | 3968 KiB |
| 13.txt | AC | 75 ms | 22144 KiB |
| 14.txt | AC | 78 ms | 4864 KiB |
| 15.txt | AC | 20 ms | 4352 KiB |
| 16.txt | AC | 78 ms | 4864 KiB |
| 17.txt | AC | 19 ms | 4352 KiB |
| 18.txt | AC | 61 ms | 4864 KiB |
| 19.txt | AC | 17 ms | 2304 KiB |
| 20.txt | AC | 83 ms | 7168 KiB |
| 21.txt | AC | 23 ms | 6016 KiB |
| 22.txt | AC | 42 ms | 4864 KiB |
| 23.txt | AC | 25 ms | 6528 KiB |
| 24.txt | AC | 74 ms | 5888 KiB |
| 25.txt | AC | 40 ms | 6144 KiB |
| 26.txt | AC | 80 ms | 6912 KiB |
| 27.txt | AC | 117 ms | 22144 KiB |
| 28.txt | AC | 43 ms | 4992 KiB |
| 29.txt | AC | 13 ms | 3840 KiB |
| 30.txt | AC | 42 ms | 4992 KiB |
| 31.txt | AC | 39 ms | 5760 KiB |
| 32.txt | AC | 40 ms | 3840 KiB |
| 33.txt | AC | 21 ms | 3968 KiB |
| 34.txt | AC | 41 ms | 4480 KiB |
| 35.txt | AC | 75 ms | 22144 KiB |
| 36.txt | AC | 78 ms | 4864 KiB |
| 37.txt | AC | 10 ms | 2304 KiB |
| 38.txt | AC | 77 ms | 4864 KiB |
| 39.txt | AC | 10 ms | 2304 KiB |
| 40.txt | AC | 73 ms | 4864 KiB |
| 41.txt | AC | 18 ms | 2304 KiB |
| 42.txt | AC | 74 ms | 4864 KiB |
| 43.txt | AC | 17 ms | 2304 KiB |
| 44.txt | AC | 77 ms | 4864 KiB |
| 45.txt | AC | 35 ms | 4352 KiB |
| 46.txt | AC | 23 ms | 5760 KiB |
| 47.txt | AC | 41 ms | 4352 KiB |
| 48.txt | AC | 21 ms | 3712 KiB |
| 49.txt | AC | 78 ms | 6400 KiB |
| 50.txt | AC | 20 ms | 3584 KiB |
| 51.txt | AC | 41 ms | 4096 KiB |
| 52.txt | AC | 20 ms | 3584 KiB |
| 53.txt | AC | 41 ms | 4224 KiB |
| 54.txt | AC | 20 ms | 3584 KiB |
| 55.txt | AC | 41 ms | 4480 KiB |
| 56.txt | AC | 22 ms | 5504 KiB |
| 57.txt | AC | 79 ms | 6400 KiB |
| 58.txt | AC | 40 ms | 5888 KiB |
| 59.txt | AC | 79 ms | 5888 KiB |
| 60.txt | AC | 20 ms | 3840 KiB |
| 61.txt | AC | 41 ms | 4352 KiB |
| 62.txt | AC | 20 ms | 3712 KiB |
| 63.txt | AC | 41 ms | 4352 KiB |
| 64.txt | AC | 20 ms | 3840 KiB |
| 65.txt | AC | 82 ms | 6400 KiB |
| 66.txt | AC | 2 ms | 4352 KiB |
| 67.txt | AC | 2 ms | 4352 KiB |