Submission #1408154


Source Code Expand

#include<bits/stdc++.h>
using namespace std;

#define MAX 100002
int n;

vector<int> v;

vector<int> ar;
vector<int> cer;
bool ok2(int val){
	ar.clear();
	for (int i = 0; i < v.size(); i++){
		ar.push_back(v[i] >= val);
	}
	cer.assign(ar.size(), 0);
	for (int i = 0; i < ar.size(); i++){
		if (ar[i]){
			if (i&&ar[i - 1]){
				cer[i] = ar[i];
			}
			if (i + 1 < ar.size() && ar[i + 1]){
				cer[i] = ar[i];
			}
		}
	}
	int u = n - 1;
	if (cer[u]){
		return true;
	}
	int lef = 0;
	for (int i = 0; i < u; i++){
		if (cer[i]){
			lef = i + 1;
		}
	}
	int rig = ar.size() - 1;
	for (int i = ar.size() - 1; i > u; i--){
		if (cer[i]){
			rig = i - 1;
		}
	}
	int L, R;
	L = u - 1;
	R = u + 1;
	if (n % 2 == 0){
		for (int i = 0; i < n / 2; i++){
			if (L >= lef){
				cer[L] = true;
			}
			if (R <= rig){
				cer[R] = true;
			}
			L -= 2;
			R += 2;
		}
		L += 2;
		R -= 2;
	}
	else{
		L = R = u;
		for (int i = 0; i <= n / 2; i++){
			if (L >= lef){
				cer[L] = true;
			}
			if (R <= rig){
				cer[R] = true;
			}
			L -= 2;
			R += 2;
		}
		L += 2;
		R -= 2;
	}
	L = max(L, lef);
	R = min(R, rig);
	for (int i = L; i <= R; i++){
		if (cer[i] != ar[i])return false;
	}
	return true;
}
bool ok(int val){
	if (ok2(val))return true;
	ar.clear();
	for (int i = 0; i < v.size(); i++){
		ar.push_back(v[i] >= val);
	}
	cer.assign(ar.size(), 0);
	for (int i = 0; i < ar.size(); i++){
		if (ar[i]){
			if (i&&ar[i - 1]){
				cer[i] = ar[i];
			}
			if (i + 1 < ar.size() && ar[i + 1]){
				cer[i] = ar[i];
			}
		}
	}
	int u = n-1;
	if (cer[u]){
		return true;
	}
	int lef = 0;
	for (int i = 0; i < u; i++){
		if (cer[i]){
			lef = i + 1;
		}
	}
	int rig = ar.size() - 1;
	for (int i = ar.size() - 1; i > u; i--){
		if (cer[i]){
			rig = i-1;
		}
	}
	if(rig!=ar.size()-1){
		int cnt = 0;
		int ich = rig-1;
		while (ich>=0&&ar[ich]){
			cnt++;
			ich -= 2;
		}
		ich += 2;
		int len = rig - ich+1;
		len /= 2;
		if (rig - lef + 1 <= u){
			return true;
		}
	}
	if(lef){
		int cnt = 0;
		int ich = lef+1;
		while (ich < ar.size()&&ar[ich]){
			cnt++;
			ich += 2;
		}
		ich -= 2;
		int len = ich - lef + 1;
		len /= 2;
		if (lef + len-1 >= u){
			return true;
		}
	}
	return false;
}

int main(){
	cin >> n;
	for (int i = 0; i < 2 * n - 1; i++){
		int a;
		scanf("%d", &a);
		v.push_back(a);
	}
	int u = n-1;
	int mint = max(min(v[u], v[u - 1]), min(v[u], v[u + 1]));
	int maxt = *max_element(v.begin(), v.end());
	while (mint + 1 < maxt){
		int mid = (mint + maxt) >> 1;
		if (ok(mid)){
			mint = mid;
		}
		else{
			maxt = mid - 1;
		}
	}
	if (ok(maxt)){
		cout << maxt << endl;
	}
	else{
		cout << mint << endl;
	}
	return 0;
}

Submission Info

Submission Time
Task D - Median Pyramid Hard
User Kmcode
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2796 Byte
Status WA
Exec Time 70 ms
Memory 2676 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:150:18: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a);
                  ^

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 1300
Status
AC × 2
AC × 25
WA × 32
Set Name Test Cases
Sample 0_00.txt, 0_01.txt
All 0_00.txt, 0_01.txt, 1_00.txt, 1_01.txt, 1_02.txt, 1_03.txt, 1_04.txt, 1_05.txt, 1_06.txt, 1_07.txt, 1_08.txt, 1_09.txt, 1_10.txt, 1_11.txt, 1_12.txt, 1_13.txt, 1_14.txt, 1_15.txt, 1_16.txt, 1_17.txt, 1_18.txt, 1_19.txt, 1_20.txt, 1_21.txt, 1_22.txt, 1_23.txt, 1_24.txt, 1_25.txt, 1_26.txt, 1_27.txt, 1_28.txt, 1_29.txt, 1_30.txt, 1_31.txt, 1_32.txt, 1_33.txt, 1_34.txt, 1_35.txt, 1_36.txt, 1_37.txt, 1_38.txt, 1_39.txt, 1_40.txt, 1_41.txt, 1_42.txt, 1_43.txt, 1_44.txt, 1_45.txt, 1_46.txt, 1_47.txt, 1_48.txt, 1_49.txt, 1_50.txt, 1_51.txt, 1_52.txt, 1_53.txt, 1_54.txt
Case Name Status Exec Time Memory
0_00.txt AC 1 ms 256 KB
0_01.txt AC 1 ms 256 KB
1_00.txt AC 1 ms 256 KB
1_01.txt AC 1 ms 256 KB
1_02.txt AC 1 ms 256 KB
1_03.txt AC 55 ms 2676 KB
1_04.txt AC 55 ms 2676 KB
1_05.txt WA 57 ms 2676 KB
1_06.txt AC 51 ms 2676 KB
1_07.txt WA 57 ms 2676 KB
1_08.txt AC 51 ms 2676 KB
1_09.txt AC 55 ms 2676 KB
1_10.txt AC 55 ms 2676 KB
1_11.txt WA 57 ms 2676 KB
1_12.txt AC 51 ms 2676 KB
1_13.txt WA 57 ms 2676 KB
1_14.txt AC 51 ms 2676 KB
1_15.txt WA 50 ms 2676 KB
1_16.txt WA 55 ms 2676 KB
1_17.txt WA 57 ms 2676 KB
1_18.txt WA 60 ms 2676 KB
1_19.txt WA 60 ms 2676 KB
1_20.txt AC 50 ms 2676 KB
1_21.txt WA 59 ms 2676 KB
1_22.txt WA 53 ms 2676 KB
1_23.txt WA 60 ms 2676 KB
1_24.txt AC 63 ms 2676 KB
1_25.txt WA 56 ms 2676 KB
1_26.txt AC 60 ms 2676 KB
1_27.txt WA 56 ms 2676 KB
1_28.txt WA 55 ms 2676 KB
1_29.txt AC 59 ms 2676 KB
1_30.txt WA 58 ms 2676 KB
1_31.txt AC 57 ms 2676 KB
1_32.txt WA 60 ms 2676 KB
1_33.txt WA 58 ms 2676 KB
1_34.txt AC 54 ms 2676 KB
1_35.txt AC 70 ms 2676 KB
1_36.txt AC 69 ms 2676 KB
1_37.txt WA 56 ms 2676 KB
1_38.txt AC 65 ms 2676 KB
1_39.txt WA 59 ms 2676 KB
1_40.txt WA 58 ms 2676 KB
1_41.txt AC 60 ms 2676 KB
1_42.txt WA 59 ms 2676 KB
1_43.txt AC 68 ms 2676 KB
1_44.txt WA 62 ms 2676 KB
1_45.txt AC 59 ms 2676 KB
1_46.txt WA 58 ms 2676 KB
1_47.txt WA 57 ms 2676 KB
1_48.txt WA 59 ms 2676 KB
1_49.txt WA 59 ms 2676 KB
1_50.txt WA 59 ms 2676 KB
1_51.txt WA 55 ms 2676 KB
1_52.txt WA 59 ms 2676 KB
1_53.txt WA 58 ms 2676 KB
1_54.txt WA 57 ms 2676 KB