//PRZEMYSL ASSERTY //SPRAWDZ CORNER CASE'Y, MINIMALNE I MAKSYMALNE WEJŚCIE I WYJŚCIE //MODULO = 1 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define foreach(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i) #define all(c) (c).begin(),(c).end() #define scanf(...) scanf(__VA_ARGS__)?:0 #define e1 first #define e2 second #define mp make_pair using namespace std; typedef long long ll; typedef pair<int,int> pii; int n,a,ans,ile[202000]; int main() { scanf("%d",&n); REP(i,n) scanf("%d",&a),ile[a]++; REP(i,201999) { if (ile[i]) ans=i; ile[i+1]+=ile[i]/2; } printf("%d",ans); }
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 | //PRZEMYSL ASSERTY //SPRAWDZ CORNER CASE'Y, MINIMALNE I MAKSYMALNE WEJŚCIE I WYJŚCIE //MODULO = 1 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <queue> #define REP(i,n) for(int i=0;i<(n);++i) #define FOR(i,a,b) for(int i=(a);i<=(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define foreach(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i) #define all(c) (c).begin(),(c).end() #define scanf(...) scanf(__VA_ARGS__)?:0 #define e1 first #define e2 second #define mp make_pair using namespace std; typedef long long ll; typedef pair<int,int> pii; int n,a,ans,ile[202000]; int main() { scanf("%d",&n); REP(i,n) scanf("%d",&a),ile[a]++; REP(i,201999) { if (ile[i]) ans=i; ile[i+1]+=ile[i]/2; } printf("%d",ans); } |