超时了吧。
by a2lyaXNhbWUgbWFyaXNh @ 2022-10-16 20:29:22
@[Hua_er](/user/823061) 试试看这个 Hack。你的输出是 4。
```cpp
input
5
1 2 2 3 5
output
2
```
by RP_INT_MAX @ 2022-10-16 20:35:50
@[S__B](/user/661595) 没有超,别乱讲。
by RP_INT_MAX @ 2022-10-16 20:36:14
@[S__B](/user/661595) 没有超时哎
by Arrosw @ 2022-10-16 20:36:38
@[RP_INT_MAX](/user/566289) 好,我看一下,我理解错了,以为集合里没有重复的元素
by Arrosw @ 2022-10-16 20:38:25
@[RP_INT_MAX](/user/566289) o~~我以为O(n)才能过~~
by a2lyaXNhbWUgbWFyaXNh @ 2022-10-16 20:47:17
@[S__B](/user/661595) 审题问题,你也不看看数据范围。
by RP_INT_MAX @ 2022-10-16 20:54:33
@[RP_INT_MAX](/user/566289) 我把排序修改了,数组中重复的数只留下一个,大佬你给的这个例子我也过了,但是还是40分55555
```c
#include <stdio.h>
int num[110] = {0};
int sort(int num[],int len);
int main()
{
int n,cnt = 0;
scanf("%d",&n);
for ( int i = 0; i < n; i++)
scanf("%d",&num[i]);
n = sort(num,n);
for( int i = 0; i < n-2; i++)
{
for ( int j = i+1; j < n-1; j++)
{
int k = j+1;
if ( num[i]+num[j] == num[k]) cnt++;
else if (num[i]+num[j] > num[k])
{
for (k++; k < n;k++)
{
if ( num[i]+num[j] == num[k]) {cnt++;break;}
else if (num[i]+num[j] < num[k]) break;
}
}
}
}
printf("%d\n",cnt);
return 0;
}
int sort(int num[],int len)
{
for ( int i = 0; i < len ;i++)
{
for ( int j = 0; j < len-1 ; j++)
{
if (num[j]>num[j+1])
{
int t = num[j];
num[j] = num[j+1];
num[j+1] = t;
}
else if ( num[j] == num[j+1])
{
int t = num[len-1];
num[len-1] = num[j];
num[j] = t;
len--;
}
}
}
return len;
}
```
by Arrosw @ 2022-10-16 21:03:50