Pagini recente » Cod sursa (job #434294) | Cod sursa (job #2515268) | Cod sursa (job #2397971) | Cod sursa (job #2318260) | Cod sursa (job #294379)
Cod sursa(job #294379)
#include <cstdio>
#include <algorithm>
const int NMAX = 5001;
int main()
{
int unic[NMAX], sir[NMAX], sir2[NMAX];
short N, i, k = 0, sz, left, right;
freopen("secv.in", "r", stdin);
freopen("secv.out", "w", stdout);
scanf("%hd", &N);
if (!N) { printf("0\n"); return 0; }
for (i = 0; i != N; ++i) {
scanf("%d ", sir + i);
sir2[i] = sir[i];
}
std::sort(sir2, sir2 + N);
k = 0; unic[k++] = sir2[0];
--N;
for (i = 0; i != N; ++i)
if (sir2[i] != sir2[i + 1]) {
unic[k++] = sir2[i + 1];
}
++N;
sz = k;
for (i = k = 0; i != N && k < sz; ++i)
if (sir[i] == unic[k]) {
if (!(k++)) left = i;
right = i;
}
if (k != sz) { printf("-1\n"); return 0; }
for (i = right, --k; i > left; --i) {
if (sir[i] == unic[k])
if (!(k--)) break;
}
left = i;
printf("%d\n", right - left + 1);
return 0;
}