Submission #1256836


Source Code Expand

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> pp;
typedef pair<ll,ll> pll;
void read(int& x){ scanf("%d",&x); }
void read(ll& x){ scanf("%lld",&x); }
template<typename T,typename... Args>
void read(T& a,Args&... b){ read(a); read(b...); }
#define all(x) (x).begin(),(x).end()
#define pb push_back
#define x first
#define y second

int n, v;

int x[200010];

int hn;
int h[20];
int gl[20][200010];
int gr[20][200010];

void in(){
	read(n, v);
	for(int i=1; i<=n; ++i) read(x[i]);
}

void build(){
	int V = v;
	for(;;++hn, V/=2){
		h[hn] = V;
		for(int i=1; i<=n;){
			int j;
			for(j=i+1; j<=n && x[j]-x[j-1] <= V; ++j);
 			for(int k=i; k<j; ++k){
				gl[hn][k]=i;
				gr[hn][k]=j-1;
			}
			i=j;
		}
		if(V == 0) break;
	}
}

int dpL[524288];
int dpR[524288];

void do_dp(){
	int M = (1<<hn);
	for(int i=0; i<M; ++i){
		dpL[i] = 0;
		dpR[i] = n+1;
		for(int j=1; j<=hn; ++j){
			int key = (1 << (j-1));
			if(i & key){
				int bl=dpL[i^key], br=dpR[i^key];
				dpL[i] = max(dpL[i], bl == n ? n : gr[j][bl+1]);
				dpR[i] = min(dpR[i], br == 1 ? 1 : gl[j][br-1]);
			}
		}
	}
}

bool all_yes;
bool yes[200010];
void apply_gugan(int a, int b){
	if(a > b){
		all_yes = true;
	} else {
		if(gl[0][a] == gl[0][b]){
			yes[gl[0][a]]=1;
		}
	}
}

void Fill(){
	int M = (1<<hn);
	for(int i=1; i<M; ++i){
		dpL[i] = max(dpL[i], dpL[i&(i-1)]);
		dpR[i] = min(dpR[i], dpR[i&(i-1)]);
	}
	for(int i=0; i<M; ++i){
		int l=dpL[i]+1;
		int r=dpR[(M-1)^i]-1;
		apply_gugan(l, r);
	}
}

int main()
{
	freopen("in", "r", stdin);
	in(); build(); do_dp(); Fill();
	for(int i=1; i<=n; ++i){
		puts(yes[gl[0][i]]?"Possible":"Impossible");
	}
    return 0;
}

Submission Info

Submission Time
Task E - Camel and Oases
User Namnamseo
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1778 Byte
Status WA
Exec Time 2 ms
Memory 2304 KB

Compile Error

./Main.cpp: In function ‘void read(int&)’:
./Main.cpp:6:34: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 void read(int& x){ scanf("%d",&x); }
                                  ^
./Main.cpp: In function ‘void read(ll&)’:
./Main.cpp:7:35: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
 void read(ll& x){ scanf("%lld",&x); }
                                   ^
./Main.cpp: In function ‘int main()’:
./Main.cpp:92:27: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
  freopen("in", "r", stdin);
                           ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1000
Status
WA × 3
WA × 70
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 1 ms 2304 KB
00_example_02.txt WA 1 ms 2304 KB
00_example_03.txt WA 1 ms 2304 KB
01.txt WA 1 ms 2304 KB
02.txt WA 1 ms 2304 KB
03.txt WA 1 ms 2304 KB
04.txt WA 1 ms 2304 KB
05.txt WA 1 ms 2304 KB
06.txt WA 1 ms 2304 KB
07.txt WA 1 ms 2304 KB
08.txt WA 1 ms 2304 KB
09.txt WA 1 ms 2304 KB
10.txt WA 1 ms 2304 KB
11.txt WA 1 ms 2304 KB
12.txt WA 1 ms 2304 KB
13.txt WA 1 ms 2304 KB
14.txt WA 2 ms 2304 KB
15.txt WA 1 ms 2304 KB
16.txt WA 1 ms 2304 KB
17.txt WA 1 ms 2304 KB
18.txt WA 1 ms 2304 KB
19.txt WA 1 ms 2304 KB
20.txt WA 1 ms 2304 KB
21.txt WA 1 ms 2304 KB
22.txt WA 1 ms 2304 KB
23.txt WA 1 ms 2304 KB
24.txt WA 1 ms 2304 KB
25.txt WA 1 ms 2304 KB
26.txt WA 1 ms 2304 KB
27.txt WA 1 ms 2304 KB
28.txt WA 1 ms 2304 KB
29.txt WA 1 ms 2304 KB
30.txt WA 1 ms 2304 KB
31.txt WA 1 ms 2304 KB
32.txt WA 1 ms 2304 KB
33.txt WA 1 ms 2304 KB
34.txt WA 1 ms 2304 KB
35.txt WA 1 ms 2304 KB
36.txt WA 1 ms 2304 KB
37.txt WA 1 ms 2304 KB
38.txt WA 1 ms 2304 KB
39.txt WA 1 ms 2304 KB
40.txt WA 1 ms 2304 KB
41.txt WA 1 ms 2304 KB
42.txt WA 1 ms 2304 KB
43.txt WA 1 ms 2304 KB
44.txt WA 1 ms 2304 KB
45.txt WA 1 ms 2304 KB
46.txt WA 1 ms 2304 KB
47.txt WA 1 ms 2304 KB
48.txt WA 1 ms 2304 KB
49.txt WA 1 ms 2304 KB
50.txt WA 1 ms 2304 KB
51.txt WA 1 ms 2304 KB
52.txt WA 1 ms 2304 KB
53.txt WA 1 ms 2304 KB
54.txt WA 2 ms 2304 KB
55.txt WA 1 ms 2304 KB
56.txt WA 1 ms 2304 KB
57.txt WA 1 ms 2304 KB
58.txt WA 1 ms 2304 KB
59.txt WA 1 ms 2304 KB
60.txt WA 1 ms 2304 KB
61.txt WA 1 ms 2304 KB
62.txt WA 1 ms 2304 KB
63.txt WA 1 ms 2304 KB
64.txt WA 1 ms 2304 KB
65.txt WA 1 ms 2304 KB
66.txt WA 1 ms 2304 KB
67.txt WA 1 ms 2304 KB