#include #include typedef struct cvor{ int broj; struct cvor *l, *d; }cvor; cvor *noviCvor(int x) { cvor *novi = (cvor*)malloc(sizeof(cvor)); novi->broj = x; novi->l = novi->d = NULL; return novi; } cvor *formTree(int *niz, int n, int i) { if(i >= n || niz[i] == -1) return NULL; cvor *koren = noviCvor(niz[i]); koren->l = formTree(niz, n, 2*i+1); koren->d = formTree(niz, n, 2*i+2); return koren; } void razmak(char c, int n) { while(n--) putchar(c); } void vizuelniPrikaz(cvor *koren, int nivo) { if(!koren) { razmak('\t', nivo); puts("~"); } else { vizuelniPrikaz(koren->d, nivo+1); razmak('\t', nivo); printf("%d\n", koren->broj); vizuelniPrikaz(koren->l, nivo+1); } } int pruneInactiveServers(cvor *koren) { if(!koren) return 0; int l = pruneInactiveServers(koren->l); int d = pruneInactiveServers(koren->d); if( !l ) koren -> l = NULL; if( !d ) koren -> d = NULL; return koren->broj + l + d; } int main() { int i, n; scanf("%d", &n); int *niz = (int*)malloc(n * sizeof(int)); for(i=0;i