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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include<iostream>
#include<stdio.h>
#include<string>
#include<cstdlib>
#include<math.h>
#include<vector>
#define prt(a) printf("%d\n",a);
#define aaa printf("a\n");
#define bbb printf("b\n");
#define ccc printf("c\n");

using namespace std;

int*d,ddl=0,dn;
int o=0;

void znajdz(int a,int b);

int main()
{
	scanf("%d",&dn);    ddl=dn;
	d=new int[ddl];
	for(int*w=d;w<d+ddl;w++)    scanf("%d",w);
	int*buf=d;  o=*d;
	for(int*w=d;w<d+ddl;w++)
        if(*w>o)
        {
            o=*w;
            buf=w;
        }
    *buf=-1; dn--;
    znajdz(o,1);
    prt(o)
    delete[]d;
	return 0;
}

void znajdz(int a,int b)
{
    for(int*w=d;w<d+ddl;w++)
        if(*w==a)
        {
            *w=-1;
            dn--;
            b--;
            if(b==0)    return znajdz(++o,1);
        }
    if((b+b<=dn)&&(a>0))
        return  znajdz(--a,b+b);
}