讨论 / 过了六点呀,总是超时!
bzl8289586 2014-01-28 07:06:33
点我顶贴 收藏 删除
大神们帮忙看看:

#include<stdio.h>

#include<string.h>

#define MAX 30000+10

int main()

{

int w,n,i,j,p[MAX],a[MAX],p2,k=0,q=0;

memset(a,0,sizeof(a));

scanf("%d",&w);scanf("%d",&n);

for(i=0;i<n;i++)scanf("%d",&p[i]);

for(i=0;i<n;i++)

for(j=0;j<n;j++)

{

int tmp;

if(p[j]<p[i]){tmp=p[i];p[i]=p[j];p[j]=tmp;}

}

for(i=0;i<n;i++)

{

p2=p[i];

for(j=n;j>0;j--)

if(p2+p[j]<=w && j!=i && a[j]==0)

{

a[j]=1;

a[i]=1;

k++;

break;

}

}

for(i=0;i<n;i++)q+=a[i];

k+=n-q;

printf("%d",k);

}

查看更多回复
提交回复