Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstring>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <set>
- #include <stack>
- #include <queue>
- #include <list>
- #include <map>
- #include <bitset>
- //#include <windows.h>
- //#include <conio.h>
- #include <cstdlib>
- #include <time.h>
- #include <limits.h>
- #include <string>
- #include <cmath>
- #include <iomanip>
- using namespace std;
- #define forA(V,it) for (typeof(V.begin()) it=V.begin();it!=V.end();it++)
- #define pb push_back
- #define mp make_pair
- #define fi first
- #define se second
- #define ll long long
- #define ull unsigned ll
- #define MOD 666013
- #define INF (1<<31)-1
- #define MINF -(1<<31)
- #define vi vector <int>
- #define vll vector <ll>
- #define pii pair <int,int>
- #define pll pair <ll,ll>
- #define newl printf("\n")
- #define DIM 1005
- int N,i,v[100005],st[100005],ap[100005],lvl;
- int main()
- {
- //freopen("patrate6.in","r",stdin);
- //freopen("patrate6.out","w",stdout);
- scanf("%d",&N);
- for (i=1;i<=N;i++) scanf("%d",&v[i]);
- sort(v+1,v+N+1);
- st[++lvl]=v[N]; ap[lvl]=1;
- for (i=N-1;i>0;i--)
- {
- if (v[i]==st[lvl])
- {
- ap[lvl]++;
- if (ap[lvl]==4)
- {
- if (lvl==1 || st[lvl-1]!=st[lvl]+1) st[lvl]++,ap[lvl]=1;
- else
- {
- while (st[lvl-1]==st[lvl]+1 && ap[lvl]==4 && lvl>1)
- {
- ap[lvl-1]++;
- lvl--;
- }
- if (ap[lvl]==4) st[lvl]++,ap[lvl]=1;
- }
- }
- }
- else st[++lvl]=v[i],ap[lvl]=1;
- }
- if (lvl==1 && ap[1]==1) printf("%d",st[1]);
- else printf("%d",st[1]+1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement