QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#610400#9417. Palindromic PolygonUESTC_NLNSWA 1ms9792kbC++141.6kb2024-10-04 15:51:062024-10-04 15:51:06

Judging History

This is the latest submission verdict.

  • [2024-10-04 15:51:06]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 9792kb
  • [2024-10-04 15:51:06]
  • Submitted

answer

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1005,IINF=0x3f3f3f3f;
const ll INF=0x3f3f3f3f3f3f3f3f;
struct point{
	int x,y;
	ll operator ^ (const point &t) const{
		return 1ll*x*t.y-1ll*y*t.x;
	}
}p[N];
int T,n,cnt,mp[N],f[N],L[N][N],R[N][N],P[N];
ll F[N][N];
ll ans;
bool vis[N][N];
void clear(int sl,int sr)
{
	for(int i=sl;i<=sr;i++) F[i][i]=0;
	for(int i=sl;i<=sr;i++) for(int j=i+1;j<=sr;j++) F[i][j]=-INF;
	return;
}
void Dfs(int l,int r)
{
	if(F[l][r]!=-INF) return;
	if(l==r) return;
	int lst=0;F[l][r]=p[l]^p[r];
	for(int i=l+1;i<r;i++)
	{
//		if(L[r][f[i]]<=lst) continue;
		lst=L[r][f[i]];
		Dfs(i,lst);
		F[l][r]=max(F[l][r],F[i][lst]+(p[l]^p[i])+(p[lst]^p[r]));
	}
	ans=max(ans,F[l][r]+(p[r]^p[l]));
	return;
}
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>T;
	while(T--)
	{
		cin>>n;ans=-INF;
		for(int i=1;i<=n;i++) cin>>f[i],mp[i]=f[i];
		sort(mp+1,mp+n+1);
		cnt=unique(mp+1,mp+n+1)-mp-1;
		for(int i=1;i<=n;i++) f[i]=lower_bound(mp+1,mp+n+1,f[i])-mp,f[n+i]=f[i];
		for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y,p[n+i]=p[i];
		for(int i=1;i<=cnt;i++) P[i]=0;
		for(int i=1;i<=n*2;i++)
		{
			for(int j=1;j<=cnt;j++) L[i][j]=P[j];
			P[f[i]]=i;
		}
		clear(1,n*2);
		for(int i=1;i<=n;i++)
		{
			for(int j=i;j<n+i;j++)
			{
				if(f[i]==f[j]) Dfs(i,j);
			}
		}
		if(ans==-INF) cout<<"0\n";
		else cout<<ans<<"\n";
	}
	return 0;
}
/*
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
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
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
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 7800kb

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
1

result:

ok 3 number(s): "84 0 1"

Test #2:

score: 0
Accepted
time: 0ms
memory: 9792kb

input:

1
4
1000000000 1000000000 1000000000 1000000000
-1000000000 -1000000000
1000000000 -1000000000
1000000000 1000000000
-1000000000 1000000000

output:

8000000000000000000

result:

ok 1 number(s): "8000000000000000000"

Test #3:

score: -100
Wrong Answer
time: 1ms
memory: 9772kb

input:

129
10
604040473 604040473 287094217 682965575 70435786 287094217 604040473 287094217 682965575 92620053
-193 -184
-200 -200
-125 -169
-120 -157
-120 -145
-124 -139
-137 -136
-155 -149
-172 -163
-187 -177
5
346787871 346787871 113397429 113397429 346787871
-173 -181
-186 -166
-200 -195
-194 -200
-17...

output:

9708
1068
877
516
11083
3559
1165
10303
560
925
3502
696
3824
1746
15832
1826
613
2221
1130
15976
1900
3450
564
273
3203
13182
8072
11946
1024
765
142
3038
5106
9437
9324
320
1741
7149
1145
480
2094
13800
18921
3350
3929
2249
21572
5947
9900
1473
2944
1574
1264
1609
9814
10836
10274
2663
8755
21104
...

result:

wrong answer 1st numbers differ - expected: '3857', found: '9708'