Submission #1847601
Source Code Expand
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#define x first
#define y second
template<typename T>inline void check_min(T a,T &b){if(a<b)b=a;}
template<typename T>inline void check_max(T a,T &b){if(a>b)b=a;}
namespace yy
{
const int N=201000,M=N*20;
struct bit
{
bool s[N];
inline int lowbit(int x){return x&(-x);}
void init(){memset(s,0,sizeof(s));}
void inc(int p){p++;for(;p<N;p+=lowbit(p))s[p]=1;}
bool query(int p){p++;bool ret=0;for(;p;p-=lowbit(p))ret|=s[p];return ret;}
}T;
struct node
{
int L,R,ty;
node(int a=0,int b=0,int c=0):L(a),R(b),ty(c){}
bool operator < (const node &h) const {return L==h.L?R==h.R?ty>h.ty:R<h.R:L>h.L;}
};
node s[M];
int begin[N],next[M*2],to[M*2],w[M*2];
int pos[N];
int n,m,e,tot,cnt,S;
void add(int x,int y,int z,bool k=1)
{
to[++e]=y;
next[e]=begin[x];
begin[x]=e;
w[e]=z;
if(k)add(y,x,z,0);
}
void work(int dis,int dep)
{
// printf("dep %d : ",dep);
for(int L=1,R;L<=n;L=R+1)
{
for(R=L;R<n && pos[R+1]-pos[R]<=dis;R++);
// printf("%2d--%2d ",L,R);
if(dep>1)add(L,R,dep-1);
else s[++tot]=node(L,R,1);
}
// printf("\n");
}
void initialize()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",pos+i);
tot=0,cnt=1;
for(int tmp=m;;tmp/=2,cnt++)
{
work(tmp,cnt);
if(!tmp)break;
// printf("e = %d\n",e);
}
// printf("cnt = %d\n",cnt);
S=1<<(cnt-1);
// printf("S = %d\n",S);
}
inline int ins(int k,int i){return k|(1<<(i-1));}
int f[N*4],g[N*4];
void dp()
{
for(int i=0;i<S;i++)
f[i]=0,g[i]=n+1;
for(int k=0;k<S;k++)
{
int p=f[k]+1;
for(int i=begin[p];i;i=next[i])
if(!(k&(1<<(w[i]-1))))
check_max(to[i],f[ins(k,w[i])]);
p=g[k]-1;
for(int i=begin[p];i;i=next[i])
if(!(k&(1<<(w[i]-1))))
check_min(to[i],g[ins(k,w[i])]);
}
}
bool ans[N];
void solve()
{
initialize();
dp();
for(int k=0;k<S;k++)
s[++tot]=node(f[k]+1,g[S-k-1]-1,0);
std::sort(s+1,s+tot+1);
T.init();
for(int i=1;i<=tot;i++)
{
if(!s[i].ty)T.inc(s[i].R);
else if(T.query(s[i].R))
{
for(int j=s[i].L;j<=s[i].R;j++)
ans[j]=1;
}
}
for(int i=1;i<=n;i++)
printf("%s\n",ans[i]?"Possible":"Impossible");
}
}
int main()
{
yy::solve();
return 0;
}
Submission Info
Submission Time
2017-12-10 11:57:29+0900
Task
E - Camel and Oases
User
Demerzel_IV
Language
C++14 (GCC 5.4.1)
Score
0
Code Size
2411 Byte
Status
WA
Exec Time
133 ms
Memory
71040 KB
Compile Error
./Main.cpp: In function ‘void yy::initialize()’:
./Main.cpp:61:22: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d%d",&n,&m);
^
./Main.cpp:63:21: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
scanf("%d",pos+i);
^
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
WA
22 ms
57728 KB
00_example_02.txt
WA
22 ms
57728 KB
00_example_03.txt
WA
22 ms
57728 KB
01.txt
AC
100 ms
60800 KB
02.txt
AC
41 ms
57984 KB
03.txt
AC
107 ms
60800 KB
04.txt
AC
39 ms
57984 KB
05.txt
AC
110 ms
60800 KB
06.txt
AC
106 ms
65152 KB
07.txt
AC
45 ms
62208 KB
08.txt
AC
112 ms
62976 KB
09.txt
AC
43 ms
60160 KB
10.txt
AC
112 ms
64896 KB
11.txt
AC
68 ms
60544 KB
12.txt
AC
111 ms
62976 KB
13.txt
AC
131 ms
68992 KB
14.txt
AC
98 ms
60800 KB
15.txt
AC
41 ms
57984 KB
16.txt
AC
103 ms
60800 KB
17.txt
AC
39 ms
57984 KB
18.txt
AC
111 ms
60800 KB
19.txt
AC
62 ms
58240 KB
20.txt
AC
104 ms
65152 KB
21.txt
AC
45 ms
62208 KB
22.txt
AC
103 ms
62976 KB
23.txt
AC
43 ms
62336 KB
24.txt
AC
102 ms
64896 KB
25.txt
AC
61 ms
62464 KB
26.txt
AC
105 ms
65024 KB
27.txt
AC
131 ms
71040 KB
28.txt
AC
104 ms
65152 KB
29.txt
AC
44 ms
62208 KB
30.txt
AC
108 ms
67200 KB
31.txt
AC
62 ms
62464 KB
32.txt
AC
102 ms
65024 KB
33.txt
AC
63 ms
62464 KB
34.txt
AC
100 ms
65152 KB
35.txt
AC
133 ms
71040 KB
36.txt
WA
102 ms
60800 KB
37.txt
AC
41 ms
57984 KB
38.txt
AC
102 ms
60800 KB
39.txt
AC
40 ms
57984 KB
40.txt
AC
106 ms
60800 KB
41.txt
AC
61 ms
58240 KB
42.txt
AC
100 ms
60800 KB
43.txt
AC
60 ms
58240 KB
44.txt
WA
105 ms
60800 KB
45.txt
WA
59 ms
58240 KB
46.txt
AC
41 ms
62208 KB
47.txt
AC
90 ms
65152 KB
48.txt
AC
55 ms
62464 KB
49.txt
AC
88 ms
65024 KB
50.txt
AC
54 ms
60416 KB
51.txt
AC
88 ms
65024 KB
52.txt
AC
58 ms
60416 KB
53.txt
AC
87 ms
65024 KB
54.txt
AC
54 ms
62464 KB
55.txt
AC
87 ms
65024 KB
56.txt
AC
38 ms
60160 KB
57.txt
AC
84 ms
65024 KB
58.txt
AC
52 ms
60544 KB
59.txt
AC
76 ms
62848 KB
60.txt
AC
50 ms
60416 KB
61.txt
AC
77 ms
65024 KB
62.txt
AC
53 ms
60416 KB
63.txt
AC
78 ms
65024 KB
64.txt
AC
49 ms
60416 KB
65.txt
AC
79 ms
65024 KB
66.txt
AC
23 ms
57728 KB
67.txt
WA
23 ms
57728 KB