POJ3618 绝对值排序

来源:互联网 发布:mysql 数据库导出图解 编辑:程序博客网 时间:2024/06/10 09:37

题意: 从0点开始走,每次走到离原点最近的点。 

思路: 将所有点按绝对值排序,计算每个点差值叠加到符合条件。

#include <iostream>#include <cstdio>#include <algorithm>using namespace std;bool cmp (int a,int b){    return abs(a)<abs(b);////从绝对值小到大排列不改变符号}int p[50010];int main(){    int i,n,a;    long long t,j;    scanf("%lld%d",&t,&n);    for(i=0;i<n;i++)    scanf("%d",&p[i]);    sort(p,p+n,cmp);    j=0;a=0;int count=0;    for(i=0;i<n;i++)    {           j+=abs(p[i]-a);            count++;            a=p[i];   //每次记录下上次的点,待会求两点差值可用。       if(j>t)     {         printf("%d\n",count-1);         break;     }    }    return 0;}


原创粉丝点击