サイレント、最適化アルゴリズムがあると思ったのですが、結果は暴力的です。データが少なく、ICPCは絶対にこのようにはなりません(決定的な顔)
トピック
6本のスティックがある場合、3本のスティックを選択して三角形を形成し、残りの3本のスティックも三角形を形成できますか?
入る
2
1 1 1 1 1 1
1 2 3 4 5 6
出力
Yes
No
ACコード
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[10];ll b[10];ll c[10];
int main()
{
int T;scanf("%d",&T);int flag=0;
while(T--)
{
memset(a,0,sizeof(a));memset(b,0,sizeof(b));memset(c,0,sizeof(c));
for(int i=0;i<6;i++)
scanf("%lld",&a[i]);
flag=0;
sort(a,a+6);
for(int i=0;i<4;i++)
{
for(int j=i+1;j<5;j++)
{
for(int k=j+1;k<6;k++)
{
memset(b,0,sizeof(b));memset(c,0,sizeof(c));
b[i]=b[j]=b[k]=1;int m=0;
for(int l=0;l<6;l++)
{
if(!b[l])
c[m++]=a[l];
}
if((a[i]+a[j]>a[k])&&(c[0]+c[1]>c[2]))
{
flag++;
}
}
}
}
if(flag) printf("Yes\n");
else printf("No\n");
}
}
暴力は終わり、それをマークし、最初にデータサイズを見て、次に最適化するかどうかを決定します