WA掉力,连样例都过不了,debug疯了,求助各位大佬qaq
#include<bits/stdc++.h>
#define re register
using namespace std;
int f1[310][310], f2[310][310], a[310], s[310];
int n;
inline int read()
{
int x = 0, f = 1;
char c = getchar();
while (c < '0' || c>'9')
{
if (c == '-') f = -1;
c = getchar();
}
while (c >= '0' && c <= '9')
{
x = (x << 3) + (x << 1) + (c ^ '0');
c = getchar();
}
return x * f;
}
int main()
{
n = read();
for (re int i = 1;i <= n;++i)
{
a[i] = read();
a[i + n] = a[i];
}
for (re int i = 1;i <= 2 * n;++i)
{
s[i] = s[i - 1] + a[i];
}
memset(f2, 0x3f, sizeof(f2));
for (re int i = 1;i <= n;++i)
{
f2[i][i] = 0;
}
for (re int len = 2;len <= n;len++)
{
for (re int i = 1;i <= 2 * n - len + 1;i++)
{
int j = i + len - 1;
for (re int k = i;k < j;k++)
{
f1[i][j] = max(f1[i][j], f1[i][k] + f1[k + 1][j] + s[j] - s[i - 1]);
f2[i][j] = min(f2[i][j], f2[i][k] + f2[k + 1][j] + s[j] - s[i - 1]);
}
}
}
int ans1 = 0, ans2 = 0x7fffffff;
for (re int i = 1;i <= n;i++)
{
ans1 = max(ans1, f1[i][i + n - 1]);
ans2 = min(ans2, f2[i][i + n - 1]);
}
printf("%d\n%d", ans2, ans1);
return 0;
}