Submission #1142845

#TimeUsernameProblemLanguageResultExecution timeMemory
1142845simplemind_31Holiday (IOI14_holiday)C++20
0 / 100
11 ms14144 KiB
#include"holiday.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
vector<ll> ATRA;
vector<vector<ll>> dp;
ll maxi=0,N;
ll solveiz(ll dia, ll posicion){
    if(dia==0 || posicion<0 || posicion>=N){
        return 0;
    }
    /*if(dp[dia][posicion]!=0){
        return dp[dia][posicion];
    }*/
    ll op1=ATRA[posicion];
    ll temp=ATRA[posicion];
    ATRA[posicion]=0;
    op1+=solveiz(dia-1,posicion);
    ATRA[posicion]=temp;
    ll op2=solveiz(dia-1,posicion-1);
    maxi=max(maxi,max(op1,op2));
    return dp[dia][posicion]=max(op1,op2);
}
ll solvede(ll dia, ll posicion){
    if(dia==0 || posicion<0 || posicion>=N){
        return 0;
    }
    /*if(dp[dia][posicion]!=0){
        return dp[dia][posicion];
    }*/
    ll op1=ATRA[posicion];
    ll temp=ATRA[posicion];
    ATRA[posicion]=0;
    op1+=solvede(dia-1,posicion);
    ATRA[posicion]=temp;
    ll op2=solvede(dia-1,posicion+1);
    maxi=max(maxi,max(op1,op2));
    return dp[dia][posicion]=max(op1,op2);
}
ll findMaxAttraction(int n,int start,int d,int attraction[]) {
    N=n;
    ATRA.resize(n);
    for(ll i=0;i<n;i++){
        ATRA[i]=attraction[i];
    }
    for(ll i=0;i<n;i++){
        //dp.clear();
        //dp.assign(d+5,vector<ll>(n+5,0));
        solveiz(d-abs(start-i),i);
        //dp.clear();
        //dp.assign(d+5,vector<ll>(n+5,0));
        solvede(d-abs(start-i),i);
    }
    return maxi;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...