Pagini recente » Cod sursa (job #2684784) | concurs-mihai-patrascu-2013/clasament | Cod sursa (job #732648) | Cod sursa (job #2464080) | Cod sursa (job #117500)
Cod sursa(job #117500)
#include <stdio.h>
//#define MAX 101 //1 milion
//#define MAX1 1 //100 mii
struct nod{
long int inf;
nod *adr;
};
nod *v[100000];
nod *q,*r;
long int x,max,uz[1000000],intrv,sum=0;
long int n,i,t;
int main(){
FILE *f = fopen("operatii.in","r");
fscanf(f,"%ld",&n);
for (i=1;i<=n;i++)
v[i]=NULL;
/* for (i=1;i<=n;i++) {
fscanf(f,"%ld",&x[i]);
q = new nod;
q->inf = i;
q->adr = v[x[i]];
v[x[i]]=q;
if (x[i]>max)
max = x[i];
}*/
for (i=1;i<=n;i++) {
fscanf(f,"%ld",&x);
q = new nod;
q->inf = i;
q->adr = v[x];
v[x]=q;
if (x>max)
max = x;
}
fclose(f);
uz[0]=1;
uz[n+1]=1;
intrv = 1;
for (i=0;i<=max;i++) {
q = v[i];
while (q!=NULL) {
t = q->inf;
uz[t]=1;
if ((uz[t-1]==0)&&(uz[t+1]==0)){
intrv++;
} else {
if ((uz[t-1]!=0)&&(uz[t+1]!=0))
intrv--;
}
r = q;
q = q->adr;
delete r;
}
sum+=intrv;
}
FILE *g = fopen("operatii.out","w");
fprintf(g,"%ld",sum);
fclose(g);
return 0;
}