本人提交记录前部分小数据AC,大数据出现问题。
#include <bits/stdc++.h>//湖边的蚁穴
#define ll long long
using namespace std;
const ll N=250005;
ll n,c[N],cnt,tmp;
map<ll,bool> vis;
bool flag;
signed main(){
// freopen("lake.in","r",stdin);
// freopen("lake.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(ll i=1;i<=n;i++){
cin>>c[i];
if(c[i]>0){
cnt+=c[i];
vis[c[i]]=1;
}
}
//全零向上取整,连通块向下取整
for(ll i=1;i<=n;i++){
if(c[i]!=0){
flag=1;
break;
}
}
if(!flag){
cout<<n/2;
return 0;
}
ll len=0;
while(c[len+1]==0){
len++;
}
for(ll i=len+1;i<=n;i++){
if(vis[c[i]]==0){
tmp++;
}else{
cnt+=ceil(tmp*1.0/2);
tmp=0;
}
}
cnt+=ceil((tmp+len)*1.0/2);
cout<<cnt;
return 0;
}
/*
1.
7
5 6 8 9 7 4 0
40
2.
7
0 0 9 1 6 8 0
26
3.
7
3 0 0 1 0 2 0
9
4.
5
0 7 5 1 0
14
5.
lake.in
50053034257678148
*/