【五校联考5day1】序列

O(n3)算法,好吧,其实正解就是这样子打的。
如果给你极限数据的话:
1,1,2,3,5,8,13,21,34,55,89,144…
就多也就是50项(差不多,如果大于50,那肯定有解)
所以啊,要不就是50项没有找到,要不就是找到了,就这么简单。
再引用一下蔡dalao的说明吧:
在这里插入图片描述

%d%a%l%a%o

上标:

#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,a[100010],opt,x;

inline int read()
{
	int x=0; char c=getchar();
	while (c<'0' || c>'9') c=getchar();
	while (c>='0' && c<='9') x=(x<<1)+(x<<3)+(c^48),c=getchar();
	return x;
}

bool check(int x,int y,int z)
{
	if (x>y) swap(x,y);
	if (y>z) swap(y,z);
	if (x>y) swap(x,y);
	if (x+y>z)
	{
		printf("%d %d %d
",x,y,z);
		return 1;
	}
	else return 0;
}

void doit()
{
	for (int i=3;i<=n;i++)
		for (int j=2;j<i;j++)
			for (int k=1;k<j;k++)
				if (check(a[i],a[j],a[k])) return;
	puts("-1 -1 -1");
}

int main()
{
	freopen("sequence.in","r",stdin);
	freopen("sequence.out","w",stdout);
	n=read();
	for (int i=1;i<=n;i++) a[i]=read();
	m=read();
	while (m--)
	{
		opt=read();
		if (opt==1) x=read(),a[x]=read();
		else doit();
	}
	return 0;
}
转载需注明出处。
原文地址:https://www.cnblogs.com/jz929/p/11817620.html