// // tournament.c // // // Created by Bibhas Ghoshal on 04/06/22. // #include int main() { int tourn[100],i,n; /* Read N */ printf("Give n:"); scanf("%d",&n); printf("\n n = %d \n",n); for(i=n; i<=2*n-1; i++){ scanf("%d",&tourn[i]); } /* Build the tournament */ buildtourn(tourn,n); printf("\n MAX = %d \n", tourn[1]); printf("\n NEXTMAX = %d \n",nextmax(tourn,n)); } buildtourn(tourn,n) int n,tourn[]; { int i; for(i=2*n-2;i>1; i=i-2){ tourn[i/2] = maxi(tourn[i],tourn[i+1]);} } int nextmax(tourn,n) int tourn[],n; { int i=2, next; /* Downward Traversal */ next = mini(tourn[2],tourn[3]); while(i<= 2*n-1){ if(tourn[i]>tourn[i+1]){ next = maxi(tourn[i+1],next); i = 2*i; } else{ next = maxi(tourn[i],next); i = 2*(i+1); } }return(next); } int maxi(int a ,int b) { if(a>b) return(a); else return(b); } int mini(int a ,int b) { if(a