资深光能
为什么我10分
#include<iostream>
#include<stack>
#include<algorithm>
using namespace std;
stack<int> s;
int n;
int a[262200];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=1;i<=n;i++)
{
if(s.size()>0 && s.top()==a[i])
{
s.pop();
s.push(a[i]+1);
}
else if(s.size()>1 && s.top()<a[i] &&s.top()!=a[i])
{
int k=s.top();
s.pop();
if(s.top()==k)
{
s.pop();
s.push(k+1);
}
else
s.push(k);
}
else if(s.size()>1 && s.top()>a[i] && s.top()!=a[i])
{
int k=s.top();
s.pop();
if(a[i]==s.top())
{
s.pop();
s.push(a[i]+1);
}
else
s.push(a[i]);
if(s.top()==k)
{
s.pop();
s.push(k+1);
}
else
s.push(k);
}
else if(s.size()==0)
s.push(a[i]);
}
int maxv=0;
while(!s.empty())
{
maxv=max(maxv,s.top());
s.pop();
}
cout<<maxv;
return 0;
}