Description
战神编码器有自己的输入规律,如果你不连续输入一个数,那么你之前输入的数就会消失。
例如:连续输入数的间隔不能大于3,当你输入1,2,4时存在3个数,但当你再输入8时,就只存在8这一个数。
给你一个战神编码器,让你求在输入所有内容后,还剩多少个数。
Input
输入包含多个测试案例,输入的第一行包含两个整数N和C(1<=N<=100000,1<=C<=1000000000)。
下一行包含N个输入的数作为内容。当N和C均为0的时候结束
Output
对每一个测试案例输出一个整数,表示还存在多少个数。
Sample Input 1
6 5 1 3 8 14 19 20
Sample Output 1
3
Sample Input 2
6 1 1 3 5 7 9 10
Sample Output 2
2
代码:
#include<stdio.h>
#include<vector>
#include<iostream>
#include<stdlib.h>
#include<algorithm>
using namespace std;
int main()
{
int a,n,c,i,l;
vector<int>v;
vector<int>::const_iterator p;
while(scanf("%d %d",&n,&c)&&(n!=0||c!=0)){
for(i=0;i<n;i++){
scanf("%d",&a);
if(!v.empty()){
p=v.end();
p--;
l=*p;
l=abs(l-a);
if(l>c)
v.clear();
}
v.insert(v.end(),a);
}
printf("%d\n",v.size());
}
return 0;
}
看到这个题突然想用一下STL,好久没用了,想复习一下发现找不到了。。。。尴尬
问题一:
p=v.end();
p--;
改为 p=v.back();为什么报错,指的是同一个元素呀。
问题2:
v.insert(a); 报错,但有些容器可以单变量添加,为了体现vector的随地插入功能么emmmmmmmm