我也採用了n>45的作法
卻還是71%
我誤解了什麼嗎?
#include <iostream>
#include <stdio.h>
#include <algorithm>
long long int* num;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int T;
int n,i,j,k,check;
std::cin>>T;
while(T--)
{
std::cin>>n;
if(n>45)
{
std::cin.ignore(1e9,'\n');
std::cout<<"YES\n";
}else
{
num=new long long int[n];
for(i=0;i<n;i++)
std::cin>>num[i];
std::sort(num,num+n);
check=0;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
for(k=j+1;k<n;k++)
{
if(num[i]+num[j]>num[k])
{
check=1;
break;
}
}
}
}
if(check==1)
std::cout<<"YES\n";
else
std::cout<<"NO\n";
delete[] num;
}
}
return 0;
}
我也採用了n>45的作法
卻還是71%
我誤解了什麼嗎?
#include
#include
#includelong long int* num;
int main()
{
std::ios_base::sync_with_stdio(false);
std::cin.tie(0);
int T;
int n,i,j,k,check;
std::cin>>T;
while(T--)
{
std::cin>>n;
if(n>45)
{
std::cin.ignore(1e9,'\n');
std::cout<<"YES\n";
}else
{
num=new long long int[n];
for(i=0;i std::cin>>num[i];
std::sort(num,num+n);
check=0;
for(i=0;i {
for(j=i+1;j {
for(k=j+1;k {
if(num[i]+num[j]>num[k])
{
check=1;
break;
}
}
}
}
if(check==1)
std::cout<<"YES\n";
else
std::cout<<"NO\n";
delete[] num;
}
}
return 0;
}
要在std::cin>>n;
下面加上std::cin.ignore();
不然std::cin.ignore(1e9, '\n');
可能會吃到 n 後面本來就有的'\n'喔