#include <iostream> using namespace std; int tab[210800]; int main() { int n,a,r,maxi=0; cin>>n; for(int i=0;i<n;i++){ cin>>a; if(a>maxi) maxi=a; tab[a]++; if(tab[a]==2){ if(tab[a+1]==1){ r=1; do{ tab[a+r+1]++; if(a+r+1>maxi) maxi=a+r+1; tab[a+r]=0; r++; }while(tab[a+r]==2); } else{ tab[a+1]++; if(a+1>maxi) maxi=a+1; } tab[a]=0; } } cout<<maxi; 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 27 28 29 30 31 | #include <iostream> using namespace std; int tab[210800]; int main() { int n,a,r,maxi=0; cin>>n; for(int i=0;i<n;i++){ cin>>a; if(a>maxi) maxi=a; tab[a]++; if(tab[a]==2){ if(tab[a+1]==1){ r=1; do{ tab[a+r+1]++; if(a+r+1>maxi) maxi=a+r+1; tab[a+r]=0; r++; }while(tab[a+r]==2); } else{ tab[a+1]++; if(a+1>maxi) maxi=a+1; } tab[a]=0; } } cout<<maxi; return 0; } |