[AGC012E] Camel and Oases


#include 
const int N=200005;
int n,v,a[N],dl[N][20],dr[N][20],pre[1<<20],suf[1<<20],dp[N],W;
int main(){
	scanf("%d%d",&n,&v);
	for (int i=1;i<=n;i++) scanf("%d",&a[i]);
	W=0;
	while (v>>W) W++;
	W++;
	for (int i=0;i>k)) dl[i][k]=dl[i-1][k];
			else dl[i][k]=i;
	for (int i=n-1;i>=1;i--)
		for (int k=0;k>k)) dr[i][k]=dr[i+1][k];
			else dr[i][k]=i;
	for (int i=0;i<(1<=0;i--) dp[i]=std::min(dp[i],dp[i+1]); 
	for (int i=1;i<=n;i++){
		if (dp[dl[i][0]-1]<=dr[i][0]+1) puts("Possible");
		else puts("Impossible");
	}
}