QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#664460 | #9417. Palindromic Polygon | ucup-team3555 | WA | 1ms | 5792kb | C++20 | 883b | 2024-10-21 20:44:30 | 2024-10-21 20:44:36 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N=1003,INF=1e18;
ll n,b[N],f[N][N],g[N][N];
array<ll,2> a[N];
void Max(ll &x,ll y){if(x<y)x=y;}
ll Cro(ll x,ll y){return a[x][0]*a[y][1]-a[x][1]*a[y][0];}
void Solve()
{
cin>>n;ll ans=0;
for(int i=1;i<=n;i++)cin>>b[i],b[i+n]=b[i];
for(int i=1;i<=n;i++)cin>>a[i][0]>>a[i][1],a[i+n]=a[i];
for(int i=1;i<=2*n;i++)for(int j=1;j<=2*n;j++)f[i][j]=g[i][j]=-INF;
for(int i=1;i<=2*n;i++)for(int j=i+1;j<=2*n;j++)if(b[i]==b[j])f[i][j]=Cro(i,j);
for(int i=1;i<=2*n;i++)f[i][i]=0;
for(int len=1;len<n;len++)for(int l=1,r=len;r<=2*n;l++,r++)
{
Max(ans,f[l][r]+Cro(r,l));
for(int i=1;i<l;i++)Max(g[i][r],f[l][r]+Cro(i,l));
for(int i=r+1;i<=2*n;i++)if(b[i]==b[l])Max(f[l][i],g[l][r]+Cro(r,i));
}
cout<<ans<<endl;
}
int main()
{
int T;cin>>T;
while(T--)Solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 5792kb
input:
3 8 2 4 2 4 3 4 5 3 2 3 0 6 -3 3 -3 0 -2 -3 1 -5 3 -3 4 0 3 1 2 3 0 0 1 0 0 1 3 1 1 1 0 0 1 0 0 1
output:
84 0 0
result:
wrong answer 3rd numbers differ - expected: '1', found: '0'