#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void turn(int *arr, int begin, int end);
int main()
{
int max,sign=0,n;
scanf("%d%d",&max,&n);
int x[n],i=0;
for (int i=0;i<n;i++)scanf("%d",&x[i]);
Quick_Sort(x,0,n-1);
int *a,*b,t=0;
a=&x[0],b=&x[n-1];
while (a-b!=1&&a!=b)
{
if (*a+*b<=max)
{
i++;
a++;
b--;
sign=0;
if (a==b)
i+=1;
}
else
{
i++;
b--;
sign=1;
}
}
if (sign==0)
printf("%d",i);
else
printf("%d",i+1);
}
void turn(int *arr, int begin, int end)
{
if(begin > end)
return;
int tmp = arr[begin];
int i = begin;
int j = end;
while(i != j)
{
while(arr[j] >= tmp && j > i)
j--;
while(arr[i] <= tmp && j > i)
i++;
if(j > i)
{
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
}
arr[begin] = arr[i];
arr[i] = tmp;
turn(arr, begin, i-1);
turn(arr, i+1, end);
}
心得:
1.冒泡排序对于大量数据过于乏力,快速排序不错
2.数值错误就不要失心疯,万岁冲锋不值得提倡,考虑多种特殊情况,比如
a b c a与c能配对,此时b要单独一组(ab相同)
a b a与b不能配对(ab相同)
如上是一种情况的两种子情况