分析
这道题我们可以使用栈来模拟,当栈顶元素和当前输入的元素和是奇数就 stk.pop()
,否则就 stk.push()
。
代码如下
#include <bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
int n,x;
stack <int> stk;
signed main(){
n=read();x=read();stk.push(x);
for(int i=2;i<=n;i++){
x=read();
if(stk.empty()){
stk.push(x);continue;
}
int y=stk.top();
if((x+y)%2){
stk.pop();
}
else{
stk.push(x);
}
}
cout<<stk.size();
return 0;
}