Pagini recente » Cod sursa (job #2978082) | Cod sursa (job #1548133) | Istoria paginii runda/vs11_12_smileagain/clasament | Cod sursa (job #1547170) | Cod sursa (job #1689528)
#include <vector>
#include <cstdio>
using namespace std;
const int Size=(1<<16);
vector<int> v[100006];
int i,j, x,n, ans, pi,ps, poz=0;
long long Ans;
bool ap[1000006];
char Buffer[Size+4];
bool cifra(char c)
{
return (c>='0' && c<='9');
}
int GetInt()
{
while(!cifra(Buffer[poz]))
{
++poz;
if(poz==Size) poz=0, fread(Buffer, 1, Size, stdin);
}
int nr=0;
while(cifra(Buffer[poz]))
{
nr=nr*10+Buffer[poz]-'0';
++poz;
if(poz==Size) poz=0, fread(Buffer, 1, Size, stdin);
}
return nr;
}
int main()
{
freopen("operatii.in", "r", stdin);
freopen("operatii.out", "w", stdout);
fread(Buffer, 1, Size, stdin);
poz=0;
n=GetInt();
for(i=1; i<=n; ++i)
{
v[GetInt()].push_back(i);
ap[i]=1;
}
ans=1;
Ans=0;
for(i=0; i<=100000; ++i)
{
for(j=0; j<v[i].size(); ++j)
{
pi=v[i][j];
while(j+1<v[i].size() && v[i][j]+1==v[i][j+1])
{
ap[v[i][j]]=0;
++j;
}
ps=v[i][j];
ap[ps]=0;
if(!ap[pi-1] && !ap[ps+1]) --ans;
else if(ap[pi-1] && ap[ps+1]) ++ans;
}
Ans+=ans;
}
printf("%lld\n", Ans);
return 0;
}