Pagini recente » Cod sursa (job #1305123) | Cod sursa (job #1479714) | Cod sursa (job #521560) | Cod sursa (job #117840) | Cod sursa (job #111919)
Cod sursa(job #111919)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define maxim(a, b) ((a > b) ? a : b)
#define NMax 1000005
typedef struct lista { int idd; struct lista *next; } lista;
int N, mx, nr_int = 1;
lista *G[NMax];
char uz[NMax];
long long bst = 0;
void add_to_list(lista **l, int item)
{
lista *tmp = (lista *)malloc(sizeof(lista));
tmp->idd = item;
tmp->next = *l;
*l = tmp;
}
int main(void)
{
int i, j, x, sz;
lista *f;
freopen("operatii.in", "r", stdin);
freopen("operatii.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++)
{
scanf("%d", &x);
add_to_list(&G[x], i);
mx = maxim(mx, x);
}
uz[0] = uz[N+1] = 1;
for (i = 0; i <= mx; i++)
{
for (f = G[i]; f; f = f->next)
{
x = f->idd;
if (!uz[x-1] && !uz[x+1]) nr_int++;
else if (uz[x-1] && uz[x+1]) nr_int--;
uz[x] = 1;
}
bst += nr_int;
}
printf("%lld\n", bst);
return 0;
}