Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.72 KB | None | 0 0
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <set>
  7. #include <stack>
  8. #include <queue>
  9. #include <list>
  10. #include <map>
  11. #include <bitset>
  12. //#include <windows.h>
  13. //#include <conio.h>
  14. #include <cstdlib>
  15. #include <time.h>
  16. #include <limits.h>
  17. #include <string>
  18. #include <cmath>
  19. #include <iomanip>
  20. using namespace std;
  21. #define forA(V,it) for (typeof(V.begin()) it=V.begin();it!=V.end();it++)
  22. #define pb push_back
  23. #define mp make_pair
  24. #define fi first
  25. #define se second
  26. #define ll long long
  27. #define ull unsigned ll
  28. #define MOD 666013
  29. #define INF (1<<31)-1
  30. #define MINF -(1<<31)
  31. #define vi vector <int>
  32. #define vll vector <ll>
  33. #define pii pair <int,int>
  34. #define pll pair <ll,ll>
  35. #define newl printf("\n")
  36. #define DIM 1005
  37. int N,i,v[100005],st[100005],ap[100005],lvl;
  38. int main()
  39. {
  40.     //freopen("patrate6.in","r",stdin);
  41.     //freopen("patrate6.out","w",stdout);
  42.     scanf("%d",&N);
  43.     for (i=1;i<=N;i++) scanf("%d",&v[i]);
  44.     sort(v+1,v+N+1);
  45.     st[++lvl]=v[N]; ap[lvl]=1;
  46.     for (i=N-1;i>0;i--)
  47.     {
  48.         if (v[i]==st[lvl])
  49.         {
  50.             ap[lvl]++;
  51.             if (ap[lvl]==4)
  52.             {
  53.                 if (lvl==1 || st[lvl-1]!=st[lvl]+1) st[lvl]++,ap[lvl]=1;
  54.                 else
  55.                 {
  56.                     while (st[lvl-1]==st[lvl]+1 && ap[lvl]==4 && lvl>1)
  57.                     {
  58.                         ap[lvl-1]++;
  59.                         lvl--;
  60.                     }
  61.                     if (ap[lvl]==4) st[lvl]++,ap[lvl]=1;
  62.                 }
  63.             }
  64.         }
  65.         else st[++lvl]=v[i],ap[lvl]=1;
  66.     }
  67.     if (lvl==1 && ap[1]==1) printf("%d",st[1]);
  68.     else printf("%d",st[1]+1);
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement