Submission #1244207

#TimeUsernameProblemLanguageResultExecution timeMemory
1244207AlmontherTeam Contest (JOI22_team)C++20
0 / 100
0 ms324 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...