#include<bits/stdc++.h>
#define ll long long
#define co cout<<
using namespace std;
// stuff
const int maxn=2e5+5;
int sh[3],n,arr[maxn][3];
int dp[maxn][8];
int rec(int x,int mask){
if(x==n) return (mask==7);
if(dp[x][mask]!=-1) return dp[x][mask];
bool ans=rec(x+1,mask);
for(int i=0;i<3;i++){
if((mask&(1<<i))==0){
if(arr[x][i]==sh[i]){
bool yes=1;
for(int j=0;j<3;j++){
if(i!=j&&arr[x][j]>=sh[j]) yes=0;
}
if(yes) ans|=rec(x+1,mask|(1<<i));
}
}
}
return dp[x][mask]=ans;
}
void solve(){
cin>>n;
for(int i=0;i<n;i++) cin>>arr[i][0]>>arr[i][1]>>arr[i][2];
int mx=-1;
if(n<=500){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
for(int k=0;k<n;k++){
if(arr[i][0]>max(arr[j][0],arr[k][0])&&arr[j][1]>max(arr[i][1],arr[k][1])&&arr[k][2]>max(arr[i][2],arr[j][2])){
mx=max(mx,arr[i][0]+arr[j][1]+arr[k][2]);
}
}
}
}
co mx;
}
else{
for(int i=1;i<=5;i++){
for(int j=1;j<=5;j++){
for(int k=1;k<=5;k++){
sh[0]=i;
sh[1]=j;
sh[2]=k;
memset(dp,-1,sizeof(dp));
if(rec(0,0)) mx=max(mx,i+j+k);
}
}
}
}
co mx;
}
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int _=1;
// cin>>_;
while(_--) solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |