Submission #1903264
Source Code Expand
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cctype>
#include <cstring>
#include <vector>
#include <list>
#include <queue>
#include <deque>
#include <stack>
#include <map>
#include <set>
#include <algorithm>
#include <iterator>
#include <bitset>
#include <ctime>
#include<complex>
using namespace std;
#define FOR(i,a,b) for (int i = (a); i < (b); i++)
#define RFOR(i,b,a) for (int i = (b)-1; i >= (a); i--)
#define ITER(it,a) for (__typeof(a.begin()) it = a.begin(); it != a.end(); it++)
#define FILL(a,value) memset(a, value, sizeof(a))
#define SZ(a) (int)a.size()
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
const double PI = acos(-1.0);
const int INF = 1000 * 1000 * 1000 + 7;
const LL LINF = INF * (LL)INF;
const int L = 20;
const int MAX = 2 * 1000 * 100 + 47;
int V[L];
int sz = 0;
int N[L][MAX];
int P[L][MAX];
int X[MAX];
int dpL[1 << L];
int dpR[1 << L];
int ANS[MAX];
set<PII> S;
int M[MAX];
void print(int mask)
{
while (mask)
{
if (mask & 1)
{
cout << 1 << " ";
}
else
{
cout << 0 << " ";
}
mask >>= 1;
}
}
//#define DEBUG
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
ios::sync_with_stdio(false); cin.tie(0);
int n, v;
cin >> n >> v;
FOR(i, 0, n) cin >> X[i];
V[0] = v;
FOR(i, 1, L)
{
V[i] = V[i - 1] / 2;
if (V[i] == 0)
{
sz = i + 1;
break;
}
}
reverse(V, V + sz);
FOR(k, 0, L)
{
int v = V[k];
N[k][n - 1] = n;
RFOR(i, n - 1, 0)
{
if (abs(X[i + 1] - X[i]) > v)
{
N[k][i] = i + 1;
continue;
}
N[k][i] = N[k][i + 1];
}
}
#ifdef DEBUG
cout << "N=" << endl;
FOR(k, 0, sz)
{
cout << V[k] << ": ";
FOR(i, 0, n)
{
cout << N[k][i] << " ";
}
cout << endl;
}
#endif
FOR(k, 0, L)
{
int v = V[k];
P[k][0] = -1;
FOR(i, 1, n)
{
if (abs(X[i] - X[i - 1]) > v)
{
P[k][i] = i - 1;
continue;
}
P[k][i] = P[k][i - 1];
}
}
#ifdef DEBUG
cout << "P=" << endl;
FOR(k, 0, sz)
{
cout << V[k] << ": ";
FOR(i, 0, n)
{
cout << P[k][i] << " ";
}
cout << endl;
}
#endif
sz--;
dpL[0] = 0;
FOR(mask, 0, 1 << sz)
{
int x = dpL[mask];
FOR(k, 0, sz)
{
if (mask & (1 << k)) continue;
dpL[mask | (1 << k)] = max(dpL[mask | (1 << k)], N[k][x]);
}
}
#ifdef DEBUG
cout << "dpL" << endl;
FOR(mask, 0, 1 << sz)
{
print(mask);
cout << " :";
cout << dpL[mask] << endl;
}
#endif
FOR(i, 0, 1 << sz) dpR[i] = n;
dpR[0] = n - 1;
FOR(mask, 0, 1 << sz)
{
int x = dpR[mask];
FOR(k, 0, sz)
{
if (mask & (1 << k)) continue;
dpR[mask | (1 << k)] = min(dpR[mask | (1 << k)], P[k][x]);
}
}
#ifdef DEBUG
cout << "dpR" << endl;
FOR(mask, 0, 1 << sz)
{
print(mask);
cout << " :";
cout << dpR[mask] << endl;
}
#endif
FOR(i, 0, n) M[i] = INF;
FOR(maskL, 0, 1 << sz)
{
int maskR = ((1 << sz) - 1) ^ maskL;
int l = dpL[maskL] - 1;
int r = dpR[maskR] + 1;
#ifdef DEBUG
cout << "!!" << l << " " << r << endl;
#endif
if (l != -1) M[l] = min(M[l], r);
}
#ifdef DEBUG
cout << "M=" << endl;
FOR(i, 0, n)
{
cout << M[i] << " ";
}
cout << endl;
#endif
RFOR(i, n - 1, 0) M[i] = min(M[i + 1], M[i]);
FOR(i, 0, n)
{
int l = P[sz][i] + 1;
int r = N[sz][i] - 1;
if (S.find(MP(l, r)) != S.end()) continue;
if (M[max(l - 1, 0)] <= r + 1)
{
FOR(k, l, r + 1) ANS[k] = 1;
}
}
FOR(i, 0, n)
{
if (ANS[i])
{
cout << "Possible" << endl;
continue;
}
cout << "Impossible" << endl;
}
}
Submission Info
Submission Time |
|
Task |
E - Camel and Oases |
User |
vjudge1 |
Language |
C++14 (Clang 3.8.0) |
Score |
0 |
Code Size |
3662 Byte |
Status |
WA |
Exec Time |
587 ms |
Memory |
44160 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
0 / 1000 |
Status |
|
|
Set Name |
Test Cases |
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 |
Case Name |
Status |
Exec Time |
Memory |
00_example_01.txt |
AC |
8 ms |
35072 KB |
00_example_02.txt |
AC |
8 ms |
35072 KB |
00_example_03.txt |
AC |
8 ms |
35072 KB |
01.txt |
AC |
42 ms |
39168 KB |
02.txt |
AC |
16 ms |
35072 KB |
03.txt |
AC |
41 ms |
39168 KB |
04.txt |
AC |
16 ms |
35072 KB |
05.txt |
AC |
40 ms |
39168 KB |
06.txt |
AC |
121 ms |
39936 KB |
07.txt |
AC |
65 ms |
35584 KB |
08.txt |
AC |
93 ms |
39680 KB |
09.txt |
AC |
74 ms |
35712 KB |
10.txt |
AC |
67 ms |
39424 KB |
11.txt |
AC |
84 ms |
33664 KB |
12.txt |
AC |
73 ms |
37504 KB |
13.txt |
AC |
567 ms |
42112 KB |
14.txt |
AC |
41 ms |
39168 KB |
15.txt |
AC |
16 ms |
35072 KB |
16.txt |
AC |
41 ms |
39168 KB |
17.txt |
AC |
15 ms |
35072 KB |
18.txt |
AC |
41 ms |
39168 KB |
19.txt |
AC |
23 ms |
33024 KB |
20.txt |
AC |
111 ms |
39808 KB |
21.txt |
AC |
69 ms |
35584 KB |
22.txt |
AC |
100 ms |
37760 KB |
23.txt |
AC |
86 ms |
35712 KB |
24.txt |
AC |
75 ms |
39424 KB |
25.txt |
AC |
83 ms |
35584 KB |
26.txt |
AC |
103 ms |
39808 KB |
27.txt |
AC |
573 ms |
44160 KB |
28.txt |
AC |
110 ms |
37760 KB |
29.txt |
AC |
61 ms |
33536 KB |
30.txt |
AC |
107 ms |
37760 KB |
31.txt |
AC |
68 ms |
35456 KB |
32.txt |
AC |
74 ms |
37504 KB |
33.txt |
AC |
74 ms |
33536 KB |
34.txt |
AC |
89 ms |
37632 KB |
35.txt |
AC |
587 ms |
42112 KB |
36.txt |
AC |
41 ms |
39168 KB |
37.txt |
AC |
15 ms |
33024 KB |
38.txt |
AC |
40 ms |
39168 KB |
39.txt |
AC |
15 ms |
33024 KB |
40.txt |
AC |
40 ms |
39168 KB |
41.txt |
AC |
23 ms |
33024 KB |
42.txt |
AC |
40 ms |
39168 KB |
43.txt |
AC |
23 ms |
33024 KB |
44.txt |
AC |
40 ms |
39168 KB |
45.txt |
AC |
23 ms |
35072 KB |
46.txt |
AC |
59 ms |
35456 KB |
47.txt |
AC |
85 ms |
37632 KB |
48.txt |
AC |
64 ms |
33408 KB |
49.txt |
AC |
88 ms |
39552 KB |
50.txt |
AC |
60 ms |
33408 KB |
51.txt |
AC |
78 ms |
37504 KB |
52.txt |
AC |
60 ms |
33408 KB |
53.txt |
AC |
79 ms |
37504 KB |
54.txt |
AC |
60 ms |
33408 KB |
55.txt |
AC |
87 ms |
37632 KB |
56.txt |
AC |
48 ms |
35456 KB |
57.txt |
AC |
88 ms |
39552 KB |
58.txt |
AC |
66 ms |
35584 KB |
59.txt |
AC |
72 ms |
39424 KB |
60.txt |
AC |
69 ms |
33536 KB |
61.txt |
AC |
83 ms |
37632 KB |
62.txt |
AC |
65 ms |
33408 KB |
63.txt |
AC |
83 ms |
37632 KB |
64.txt |
AC |
68 ms |
33536 KB |
65.txt |
AC |
88 ms |
39680 KB |
66.txt |
AC |
7 ms |
35072 KB |
67.txt |
WA |
8 ms |
35072 KB |