String Theory
神仙题。
首先如果所有的
然后这里有个关键观察:对于
证明考虑归纳。首先对于
如果
把首尾的
于是可以枚举答案
最后可能需要特判答案为
#include <bits/stdc++.h>
using namespace std;
int n, a[105], sm, tmp[105];
bool chk(int x) {
for (int i = 1; i <= n; i++) tmp[i] = a[i];
int l = 1, r = n, i;
for (i = x; i > 1 && l <= r; i--) {
if (tmp[l] < i) break;
tmp[l] -= i; if (!tmp[l]) ++l;
if (tmp[r] < i) break;
tmp[r] -= i; if (!tmp[r]) --r;
}
return (l <= r && i == 1);
}
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; i++) scanf("%d", &a[i]), sm += a[i];
if (sm & 1) return printf("no quotation\n"), 0;
for (int i = min(a[1], a[n]); i >= 2; i--) {
if (chk(i)) return printf("%d\n", i), 0;
}
return printf(sm == 2 ? "1\n" : "no quotation\n"), 0;
}