#include<stdio.h> int tab[201719]; int main(){ int n; int max=0; int min=1000000; scanf("%d",&n); for(int i=0;i<n;i++){ int a; scanf("%d",&a); tab[a]++; if(a<min)min=a; if(a>max)max=a; } int it=min; while(it<max){ tab[it+1]+=tab[it]/2; it++; } while(tab[max]>1){ tab[max]=tab[max]/2; it++; } printf("%d\n",it); return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include<stdio.h> int tab[201719]; int main(){ int n; int max=0; int min=1000000; scanf("%d",&n); for(int i=0;i<n;i++){ int a; scanf("%d",&a); tab[a]++; if(a<min)min=a; if(a>max)max=a; } int it=min; while(it<max){ tab[it+1]+=tab[it]/2; it++; } while(tab[max]>1){ tab[max]=tab[max]/2; it++; } printf("%d\n",it); return 0; } |