法一,数字太大,可能通过不了
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int a[30010];
#include <algorithm>
#include <cstdio>
using namespace std;
int a[30010];
int main()
{
int i,n,m,t=0;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++) scanf("%d",&a[i]);
{
int i,n,m,t=0;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++) scanf("%d",&a[i]);
while(m>0)
{
//找出最小值和最大值
int x1=0,x2=m-1;
for(i=0;i<m;i++)
{
if(a[i]<a[x1]) x1=i;
if(a[i]>a[x2]) x2=i;
}
if(a[x1]+a[x2]<=n)
{
t++;
if(x1==m-2) swap(x1,x2);
if(x2==m-1) swap(x1,x2);
a[x1]=a[m-1];
a[x2]=a[m-2];
m=m-2;
}
else {
a[x2]=a[m-1];
m--;
t++;
}
}
printf("%d\n",t);
return 0;
}
{
//找出最小值和最大值
int x1=0,x2=m-1;
for(i=0;i<m;i++)
{
if(a[i]<a[x1]) x1=i;
if(a[i]>a[x2]) x2=i;
}
if(a[x1]+a[x2]<=n)
{
t++;
if(x1==m-2) swap(x1,x2);
if(x2==m-1) swap(x1,x2);
a[x1]=a[m-1];
a[x2]=a[m-2];
m=m-2;
}
else {
a[x2]=a[m-1];
m--;
t++;
}
}
printf("%d\n",t);
return 0;
}
法二,形式上数组
#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
int a[30010];
#include <algorithm>
#include <cstdio>
using namespace std;
int a[30010];
int main()
{
int i,n,m,t=0;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++) scanf("%d",&a[i]);
sort(a,a+m);
int j;
i=0;
j=m-1;
int x1,x2;
while(i<=j)
{
x1=i,x2=j;
if(a[x1]+a[x2]<=n)
{
t++;
i++;
j--;
}
else {
j--;
t++;
}
}
printf("%d\n",t);
return 0;
}
{
int i,n,m,t=0;
scanf("%d%d",&n,&m);
for(i=0;i<m;i++) scanf("%d",&a[i]);
sort(a,a+m);
int j;
i=0;
j=m-1;
int x1,x2;
while(i<=j)
{
x1=i,x2=j;
if(a[x1]+a[x2]<=n)
{
t++;
i++;
j--;
}
else {
j--;
t++;
}
}
printf("%d\n",t);
return 0;
}