#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n;
cin >> n;
vector<int> a(n);
int maxValue = 0, maxIndex = n - 1;
for (int i = 0; i < n; i++)
{
cin >> a[i];
if (a[i] >= maxValue)
{
maxValue = a[i];
maxIndex = i;
}
}
for (int i = maxIndex + 1; i >= 0; i--)
{
bool passed = true;
vector<int> diff(n + 1, 0);
int currSubtract = 0;
for (int j = 0; j < n; j++)
{
currSubtract += diff[j];
int actual = a[j] - currSubtract;
if (actual < 0)
{
passed = false;
break;
}
if (j <= n - i)
{
currSubtract += actual;
diff[j + i] -= actual;
}
else if (actual != 0)
{
passed = false;
break;
}
}
if (passed)
{
cout << i;
return 0;
}
}
cout << 0;
return 0;
}
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 | #include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> a(n); int maxValue = 0, maxIndex = n - 1; for (int i = 0; i < n; i++) { cin >> a[i]; if (a[i] >= maxValue) { maxValue = a[i]; maxIndex = i; } } for (int i = maxIndex + 1; i >= 0; i--) { bool passed = true; vector<int> diff(n + 1, 0); int currSubtract = 0; for (int j = 0; j < n; j++) { currSubtract += diff[j]; int actual = a[j] - currSubtract; if (actual < 0) { passed = false; break; } if (j <= n - i) { currSubtract += actual; diff[j + i] -= actual; } else if (actual != 0) { passed = false; break; } } if (passed) { cout << i; return 0; } } cout << 0; return 0; } |
English