每次一个人到离原点最近的一个景点(有正负)求最多能经过多少个景点?
/*
* POJ_3618.cpp
*
* Created on: 2013年11月26日
* Author: Administrator
*/
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = 50005;
int mark[maxn];
bool cmp(int a,int b){//***abs()用得妙....
return abs(a) < abs(b);
}
int main(){
int t,n;
while(scanf("%d%d",&t,&n)!=EOF){
memset(mark,0,sizeof(mark));
int i;
for(i = 1 ; i <= n ; ++i){
scanf("%d",&mark[i]);
}
sort(mark+1,mark+1+n,cmp);
int k = 1;
int total = 0;
if(mark[1] == 0){
total = 1;
k++;
}
int use_time = 0;
for(; k <= n ; ++k){
if(abs(mark[k] - mark[k-1]) <= t -use_time){//如果时间还够去下一个景点...
total++;
use_time += abs(mark[k] - mark[k-1]);
}else{
break;
}
}
printf("%d\n",total);
}
return 0;
}