求助!!自己试没有问题但是提交全部超时!!
查看原帖
求助!!自己试没有问题但是提交全部超时!!
1122253
kmg_is_so_cute楼主2024/3/5 21:53

代码如下


#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include

using namespace std;

const int N = 1001100;

int h[N], f[N] , ff[N]; int n;

int main() {

for (int i = 0;; i++)
{
	scanf("%d", &h[i]);
	n++;
	char c = getchar();
	if (c == '\n')
		break;
}

int len = 0;
f[0] = 2147483647;
for (int i = 0; i < n; i++)
{
	int l = 0, r = len + 1;
	while (l + 1 != r)
	{
		int mid = (l + r) >> 1;
		if (f[mid] >= h[i]) l = mid;
		else r = mid;
	}
	len = max(len, l + 1);
	f[l + 1] = h[i];
}
printf("%d\n" , len);

int len2 = 0;
ff[0] = -2147483647;
for (int i = 0; i < n; i++)
{
	int l = 0, r = len2 + 1;
	while (l + 1 != r)
	{
		int mid = (l + r) >> 1;
		if (ff[mid] < h[i]) l = mid;
		else r = mid;
	}
	len2 = max(len2, l + 1);
	ff[l + 1] = h[i];
}
cout << len2;
return 0;

}


#define _CRT_SECURE_NO_WARNINGS
#include <cstring>
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>

using namespace std;

const int N = 1001100;

int h[N], f[N] , ff[N];
int n;


int main()
{

	for (int i = 0;; i++)
	{
		scanf("%d", &h[i]);
		n++;
		char c = getchar();
		if (c == '\n')
			break;
	}

	int len = 0;
	f[0] = 2147483647;
	for (int i = 0; i < n; i++)
	{
		int l = 0, r = len + 1;
		while (l + 1 != r)
		{
			int mid = (l + r) >> 1;
			if (f[mid] >= h[i]) l = mid;
			else r = mid;
		}
		len = max(len, l + 1);
		f[l + 1] = h[i];
	}
	printf("%d\n" , len);

	int len2 = 0;
	ff[0] = -2147483647;
	for (int i = 0; i < n; i++)
	{
		int l = 0, r = len2 + 1;
		while (l + 1 != r)
		{
			int mid = (l + r) >> 1;
			if (ff[mid] < h[i]) l = mid;
			else r = mid;
		}
		len2 = max(len2, l + 1);
		ff[l + 1] = h[i];
	}
	cout << len2;
	return 0;
}
2024/3/5 21:53
加载中...