Submission #38147532


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
//#define int long long
void chkmax(int &a,int b) {a=a>b?a:b;}
void chkmin(int &a,int b) {a=a<b?a:b;}
int read() {
	int x=0,f=1;char ch=getchar();
	while(!isdigit(ch)) f=(ch=='-'?-1:f),ch=getchar();
	while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
	return x*f;
}
int a[6010],f[2010][2010],g[2010],mx;
signed main() {
	int n=read(),m=n*3,cnt=0;
	for(int i=1;i<=m;i++)
		a[i]=read();
	memset(f,-0x3f,sizeof(f));
	memset(g,-0x3f,sizeof(g));
	f[a[1]][a[2]]=f[a[2]][a[1]]=0;
	g[a[1]]=g[a[2]]=0,mx=0;
	for(int i=3;i<m;i+=3) {
		array<int,3> p={a[i],a[i+1],a[i+2]};
		sort(p.begin(),p.end());
		if(p[0]==p[2]) {cnt++;continue;}
		vector<pair<pair<int,int>,int> > ch;
		auto add=[&](int x,int y,int val) {
			ch.push_back({{x,y},val});
			ch.push_back({{y,x},val});
		};
		if(p[1]==p[2]) swap(p[0],p[2]);
		if(p[0]==p[1]) {
			for(int i=1;i<=n;i++)
				add(i,p[2],f[i][p[0]]+1);
		}
		for(int i=0;i<3;i++) {
			vector<int> q;
			for(int j=0;j<3;j++)
				if(i!=j) q.push_back(p[j]);
			add(q[0],q[1],f[p[i]][p[i]]+1);
		}
		for(int i=0;i<3;i++) {
			for(int j=1;j<=n;j++) {
				bool flag=0;
				for(int k=0;k<3;k++)
					if(i!=k&&j==p[k]) flag=1;
				if(flag) add(p[i],j,mx);
				else add(p[i],j,g[j]);
			}
		}
		for(auto [x,val]:ch) {
			chkmax(f[x.first][x.second],val);
			chkmax(g[x.first],val),chkmax(g[x.second],val);
			chkmax(mx,val);
		}
	}
	int ans=0;
	for(int i=1;i<=n;i++)
		for(int j=i;j<=n;j++)
			chkmax(ans,f[i][j]+(i==a[m]&&j==a[m]));
	printf("%d\n",ans+cnt);
	return 0;
}

Submission Info

Submission Time
Task F - Brave CHAIN
User cxm1024
Language C++ (GCC 9.2.1)
Score 600
Code Size 1586 Byte
Status AC
Exec Time 676 ms
Memory 19640 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 3
AC × 55
Set Name Test Cases
Sample sample00, sample01, sample02
All case03, case04, case05, case06, case07, case08, case09, case10, case11, case12, case13, case14, case15, case16, case17, case18, case19, case20, case21, case22, case23, case24, case25, case26, case27, case28, case29, case30, case31, case32, case33, case34, case35, case36, case37, case38, case39, case40, case41, case42, case43, case44, case45, case46, case47, case48, case49, case50, case51, case52, case53, case54, sample00, sample01, sample02
Case Name Status Exec Time Memory
case03 AC 613 ms 19544 KiB
case04 AC 670 ms 19584 KiB
case05 AC 603 ms 19640 KiB
case06 AC 668 ms 19512 KiB
case07 AC 676 ms 19488 KiB
case08 AC 676 ms 19636 KiB
case09 AC 151 ms 19620 KiB
case10 AC 499 ms 19600 KiB
case11 AC 15 ms 19484 KiB
case12 AC 19 ms 19464 KiB
case13 AC 16 ms 19364 KiB
case14 AC 15 ms 19484 KiB
case15 AC 15 ms 19436 KiB
case16 AC 641 ms 19580 KiB
case17 AC 475 ms 19536 KiB
case18 AC 123 ms 19508 KiB
case19 AC 540 ms 19608 KiB
case20 AC 62 ms 19560 KiB
case21 AC 29 ms 19448 KiB
case22 AC 79 ms 19496 KiB
case23 AC 18 ms 19480 KiB
case24 AC 140 ms 19632 KiB
case25 AC 268 ms 19456 KiB
case26 AC 509 ms 19472 KiB
case27 AC 506 ms 19472 KiB
case28 AC 280 ms 19464 KiB
case29 AC 341 ms 19472 KiB
case30 AC 88 ms 19624 KiB
case31 AC 277 ms 19520 KiB
case32 AC 94 ms 19564 KiB
case33 AC 446 ms 19452 KiB
case34 AC 501 ms 19528 KiB
case35 AC 31 ms 19524 KiB
case36 AC 345 ms 19508 KiB
case37 AC 16 ms 19464 KiB
case38 AC 41 ms 19472 KiB
case39 AC 477 ms 19516 KiB
case40 AC 83 ms 19468 KiB
case41 AC 642 ms 19640 KiB
case42 AC 635 ms 19512 KiB
case43 AC 641 ms 19460 KiB
case44 AC 620 ms 19456 KiB
case45 AC 654 ms 19508 KiB
case46 AC 135 ms 19572 KiB
case47 AC 426 ms 19452 KiB
case48 AC 168 ms 19552 KiB
case49 AC 584 ms 19472 KiB
case50 AC 275 ms 19468 KiB
case51 AC 278 ms 19508 KiB
case52 AC 273 ms 19448 KiB
case53 AC 25 ms 19448 KiB
case54 AC 36 ms 19472 KiB
sample00 AC 16 ms 19460 KiB
sample01 AC 16 ms 19492 KiB
sample02 AC 15 ms 19460 KiB