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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <iostream>
#include <vector>

using namespace std;

void vecp(const vector<long long>& spot) {
	for (long long j=0; j<spot.size(); j++)
		cout << spot[j] << " ";
	cout << endl;
}

bool test(const vector<long long>& b, long long k) {

	vector<long long> b_copy;
	long long last = 0;
	long long fs = min(k, static_cast<long long>(b.size()-k+1));
	long long bur, roz, last_ogon, bogon, l_bk;
	for (long long i=0; i<fs; i++) {
		bur = b[i];
		roz = bur - last;
		if (roz < 0) return false;
		last = bur;
		b_copy.push_back(roz);
	}
	
	for (long long i=k; i<b.size()-k+1; i++) {
		bur = b[i];
		roz = bur - last + b_copy[b_copy.size()-k];
		if (roz < 0) return false;
		last = bur;
		b_copy.push_back(roz);
	}
	last_ogon = last;
	bogon = max(fs, static_cast<long long>(b.size() - k + 1));

	for (long long i=bogon; i<b.size(); i++){ 
		long long ind = i-bogon;
		bur = b[i];
		if (k-ind > b_copy.size()) {
			l_bk = 0;
		} else {
			l_bk = b_copy[b_copy.size()-k+ind];
		}
		roz = bur - last_ogon + l_bk;
		if (roz != 0) {
			return false;
		}
		last_ogon = bur;
	}
		
	return(true);
}

int main()
{
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);

	vector<long long> bursztyny;
	long long n, m, k, p;
	
	cin >> n;
	for (long long i=0; i<n; i++) {
		cin >> p;
		bursztyny.push_back(p);
	}

	long long suma = 0;
	for (long long i=0; i<bursztyny.size(); i++) {
		suma += bursztyny[i];
	}

	long long wynik = 1;

	for (long long i=bursztyny.size()-1; i>0; i--) {
		if ((suma % i) == 0) {
			if (test(bursztyny, i)) {
				wynik = i;
				break;
			}
		}
	}

	long long tsama = bursztyny[0];
	long long rowne = true;
	long long bb;
	for (long long i=0; i<bursztyny.size(); i++) {
		bb = bursztyny[i];
		if (bb != tsama) {
			rowne = false;
			break;
		}
	}
	if (rowne) wynik = bursztyny.size();

	cout << wynik;
	return(0);
}