Submission #1678896
Source Code Expand
// tzl ak IOI!
#include<bits/stdc++.h>
#define HEAP priority_queue
#define rep(i, n) for(int i = 0, _end_ = (n); i < _end_; ++i)
#define per(i, n) for(int i = (n) - 1; i >= 0 ; --i)
#define forn(i, l, r) for(int i = (l), _end_ = (r); i <= _end_; ++i)
#define nrof(i, r, l) for(int i = (r), _end_ = (l); i >= _end_; --i)
#define FOR(a, b) for(auto (a): (b))
#define mp make_pair
#define mt make_tuple
#define pb push_back
#define X first
#define Y second
#define eps 1e-6
#define pi 3.1415926535897932384626433832795
#define SZ(x) (int)x.size()
#define ALL(x) x.begin(), x.end()
#define FILL(a, b) memset((a), (b), sizeof((a)))
#define MCPY(a, b) memcpy((a), (b), sizeof((b)))
using namespace std;
typedef long long LL;
typedef double flt;
typedef vector<int> vi;
typedef vector<LL> vl;
typedef pair<int,int> pii;
typedef pair<int,LL> pil;
typedef pair<LL,int> pli;
typedef pair<LL,LL> pll;
typedef vector<pil> vil;
typedef vector<pii> vii;
typedef vector<pli> vli;
typedef vector<pll> vll;
const int iinf = 1e9 + 7;
const LL linf = 1ll << 60;
const flt dinf = 1e60;
template <typename T>
inline void scf(T &x)
{
bool f = 0; x = 0; char c = getchar();
while((c < '0' || c > '9') && c != '-') c = getchar();
if(c == '-') { f = 1; c = getchar(); }
while(c >= '0' && c <= '9') { x = x * 10 + c - '0'; c = getchar(); }
if(f) x = -x; return;
}
template <typename T1, typename T2>
void scf(T1 &x, T2 &y) { scf(x); return scf(y); }
template <typename T1, typename T2, typename T3>
void scf(T1 &x, T2 &y, T3 &z) { scf(x); scf(y); return scf(z); }
template <typename T1, typename T2, typename T3, typename T4>
void scf(T1 &x, T2 &y, T3 &z, T4 &w) { scf(x); scf(y); scf(z); return scf(w); }
inline char mygetchar(){ char c = getchar(); while(c == ' ' || c == '\n') c = getchar(); return c; }
template <typename T>
void chkmax(T &x, const T &y){ if(y > x) x = y; return; }
template <typename T>
void chkmin(T &x, const T &y){ if(y < x) x = y; return; }
#ifdef ONLINE_JUDGE
#define debug(x,c) ;
#else
#define DEBUG
#define debug(x,c) cerr<<#x<<"="<<x<<c;
#endif
void TZL();
void RANK1();
#define tzl int
#define ak main
#define IOI ()
tzl ak IOI
{
#undef tzl
#undef ak
#undef IOI
TZL();
RANK1();
#define tzl return
#define caisi 0
#define myy ;
tzl caisi myy
#undef tzl
#undef caisi
#undef myy
}
//---------------------------head----------------------------
const int N = 2e5 + 100;
const int lgN = 20;
int n, V, m;
int x[N];
int lb[lgN][N], rb[lgN][N];
vii seg[lgN];
int dpl[1048576], dpr[1048576];
void get_seg()
{
for(int i = 1, j; i <= n; i = j)
{
j = i + 1;
while(j <= n && x[j] - x[j - 1] <= V) ++j;
seg[m].pb({i, j - 1});
}
for(auto x: seg[m])
{
int l = x.X, r = x.Y;
forn(i, l, r) lb[m][i] = l, rb[m][i] = r;
}
++m;
return;
}
void TZL()
{
scf(n, V);
forn(i, 1, n) scf(x[i]);
while(V)
{
get_seg();
V >>= 1;
}
forn(i, 1, n) lb[m][i] = i, rb[m][i] = i;
++m;
return;
}
void DPL()
{
forn(msk, 1, (1 << m) - 1)
{
rep(i, m) if((msk >> i) & 1)
{
chkmax(dpl[msk], dpl[msk ^ (1 << i)]);
chkmax(dpl[msk], rb[i][dpl[msk ^ (1 << i)] + 1]);
}
}
return;
}
void DPR()
{
dpr[0] = n + 1;
forn(msk, 1, (1 << m) - 1)
{
dpr[msk] = n + 1;
rep(i, m) if((msk >> i) & 1)
{
chkmin(dpr[msk], dpr[msk ^ (1 << i)]);
chkmin(dpr[msk], lb[i][dpr[msk ^ (1 << i)] - 1]);
}
}
return;
}
vii all;
bool ans[N];
int TOT;
void check(int l, int r)
{
for(int msk = 0; msk < (1 << m); msk += 2)
{
int lb = dpl[msk], rb = dpr[TOT ^ msk];
if(l <= lb + 1 && r >= rb - 1)
{
forn(i, l, r) ans[i] = 1;
return;
}
}
return;
}
void RANK1()
{
if(SZ(seg[0]) <= m)
{
DPL(); DPR();
TOT = (1 << m) - 2;
for(auto x: seg[0]) check(x.X, x.Y);
}
forn(i, 1, n) puts(ans[i] ? "Possible" : "Impossible");
return;
}
Submission Info
Submission Time |
|
Task |
E - Camel and Oases |
User |
OMTWOCZWEIXVI |
Language |
C++14 (GCC 5.4.1) |
Score |
1000 |
Code Size |
4002 Byte |
Status |
AC |
Exec Time |
124 ms |
Memory |
43392 KB |
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
1000 / 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 |
3 ms |
8448 KB |
00_example_02.txt |
AC |
3 ms |
8448 KB |
00_example_03.txt |
AC |
5 ms |
14592 KB |
01.txt |
AC |
91 ms |
39040 KB |
02.txt |
AC |
28 ms |
31488 KB |
03.txt |
AC |
88 ms |
39040 KB |
04.txt |
AC |
29 ms |
31488 KB |
05.txt |
AC |
89 ms |
39040 KB |
06.txt |
AC |
97 ms |
40444 KB |
07.txt |
AC |
31 ms |
32768 KB |
08.txt |
AC |
92 ms |
39936 KB |
09.txt |
AC |
32 ms |
32512 KB |
10.txt |
AC |
91 ms |
40192 KB |
11.txt |
AC |
52 ms |
35200 KB |
12.txt |
AC |
92 ms |
40192 KB |
13.txt |
AC |
119 ms |
42752 KB |
14.txt |
AC |
92 ms |
38912 KB |
15.txt |
AC |
29 ms |
31488 KB |
16.txt |
AC |
89 ms |
38912 KB |
17.txt |
AC |
28 ms |
31488 KB |
18.txt |
AC |
88 ms |
38912 KB |
19.txt |
AC |
48 ms |
34048 KB |
20.txt |
AC |
96 ms |
40828 KB |
21.txt |
AC |
33 ms |
32896 KB |
22.txt |
AC |
93 ms |
40192 KB |
23.txt |
AC |
33 ms |
33020 KB |
24.txt |
AC |
92 ms |
40320 KB |
25.txt |
AC |
54 ms |
35328 KB |
26.txt |
AC |
95 ms |
40828 KB |
27.txt |
AC |
122 ms |
43260 KB |
28.txt |
AC |
98 ms |
40572 KB |
29.txt |
AC |
33 ms |
32768 KB |
30.txt |
AC |
99 ms |
41468 KB |
31.txt |
AC |
53 ms |
35456 KB |
32.txt |
AC |
94 ms |
40448 KB |
33.txt |
AC |
53 ms |
35584 KB |
34.txt |
AC |
96 ms |
40832 KB |
35.txt |
AC |
124 ms |
43392 KB |
36.txt |
AC |
92 ms |
38912 KB |
37.txt |
AC |
29 ms |
31488 KB |
38.txt |
AC |
92 ms |
38912 KB |
39.txt |
AC |
29 ms |
31488 KB |
40.txt |
AC |
89 ms |
38912 KB |
41.txt |
AC |
48 ms |
34048 KB |
42.txt |
AC |
91 ms |
38912 KB |
43.txt |
AC |
49 ms |
34048 KB |
44.txt |
AC |
92 ms |
39040 KB |
45.txt |
AC |
49 ms |
34048 KB |
46.txt |
AC |
31 ms |
32768 KB |
47.txt |
AC |
95 ms |
40320 KB |
48.txt |
AC |
51 ms |
35200 KB |
49.txt |
AC |
94 ms |
40448 KB |
50.txt |
AC |
53 ms |
35200 KB |
51.txt |
AC |
94 ms |
40192 KB |
52.txt |
AC |
52 ms |
35200 KB |
53.txt |
AC |
96 ms |
40192 KB |
54.txt |
AC |
52 ms |
35200 KB |
55.txt |
AC |
93 ms |
40320 KB |
56.txt |
AC |
30 ms |
32256 KB |
57.txt |
AC |
90 ms |
40320 KB |
58.txt |
AC |
50 ms |
35200 KB |
59.txt |
AC |
88 ms |
39936 KB |
60.txt |
AC |
52 ms |
35200 KB |
61.txt |
AC |
93 ms |
40320 KB |
62.txt |
AC |
51 ms |
35200 KB |
63.txt |
AC |
92 ms |
40192 KB |
64.txt |
AC |
51 ms |
35200 KB |
65.txt |
AC |
93 ms |
40320 KB |
66.txt |
AC |
4 ms |
8448 KB |
67.txt |
AC |
4 ms |
8448 KB |