问题描述
给定一个整数数列,数列中连续相同的最长整数序列算成一段,问数列中共有多少段?
输入格式
输入的第一行包含一个整数n,表示数列中整数的个数。 第二行包含n个整数a1, a2, …, an,表示给定的数列,相邻的整数之间用一个空格分隔。
输出格式
输出一个整数,表示给定的数列有多个段。
样例输入
8 8 8 8 0 12 12 8 0
样例输出
5
样例说明
8 8 8是第一段,0是第二段,12 12是第三段,倒数第二个整数8是第四段,最后一个0是第五段。
评测用例规模与约定
1 ≤ n ≤ 1000,0 ≤ ai ≤ 1000。
简单水题,模拟即可
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#include<unordered_set>
#define rg register ll
#define inf 2147483647
#define min(a,b) (a<b?a:b)
#define max(a,b) (a>b?a:b)
#define ll long long
#define maxn 200005
const double eps = 1e-8;
using namespace std;
inline ll read()
{
char ch = getchar(); ll s = 0, w = 1;
while (ch < 48 || ch>57) { if (ch == '-')w = -1; ch = getchar(); }
while (ch >= 48 && ch <= 57) { s = (s << 1) + (s << 3) + (ch ^ 48); ch = getchar(); }
return s * w;
}
inline void write(ll x)
{
if (x < 0)putchar('-'), x = -x;
if (x > 9)write(x / 10);
putchar(x % 10 + 48);
}
ll a[maxn],ans;
int main()
{
ll n=read();
for(rg i=1;i<=n;i++)
{
a[i]=read();
}
for(rg i=1;i<=n;i++)
{
rg j=i;
while(a[j]==a[i]&&j<=n)j++;
i=j-1,ans++;
}
cout<<ans<<endl;
return 0;
}