不要使用遍历方式以此查找,会出现超时。
#include <cstdio>
#include <vector>
using namespace std;
#define MAX 1020
vector<int>face ;
int main(void)
{
int n , amount ;
int i ;
bool flag = false ;
face.assign(MAX + 1, 0 );
//freopen("input.txt" , "r" , stdin);
scanf("%d %d" , &n , &amount);
while(n--)
{
int value ;
scanf("%d" , &value);
face[value]++ ;
}
for( i = 1 ; i <= amount/2 ; i++)
{
face[i]-- ;
face[amount - i] -- ;
if( face[i]>= 0 && face[amount - i]>=0)
{
flag =true ;
printf("%d %d\n" , i , amount - i);
break ;
}
}
if(!flag)printf("No Solution\n");
return 0;
}