Submission #230144

#TimeUsernameProblemLanguageResultExecution timeMemory
230144Andrei_CotorCollecting Stamps 3 (JOI20_ho_t3)C++11
100 / 100
92 ms67004 KiB
#include<iostream>
#include<algorithm>

using namespace std;

int Poz[205],T[205];
long long Dp[2][205][205][205];

void propag(int tip, int i, int j, int nr, long long time)
{
    if(tip==0)
    {
        if(T[i]>=time)
            nr++;
    }
    else if(T[j]>=time)
    {
        nr++;
    }

    Dp[tip][i][j][nr]=min(Dp[tip][i][j][nr],time);
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n,l;
    cin>>n>>l;
    
    for(int i=1; i<=n; i++)
        cin>>Poz[i];
    Poz[n+1]=l;

    for(int i=1; i<=n; i++)
        cin>>T[i];

    for(int i=0; i<2; i++)
    {
        for(int j=0; j<=n; j++)
        {
            for(int k=j+1; k<=n+1; k++)
            {
                for(int l=0; l<=j+n-k+1; l++)
                {
                    Dp[i][j][k][l]=1e18;
                }
            }
        }
    }

    Dp[0][0][n+1][0]=Dp[1][0][n+1][0]=0;
    for(int i=0; i<n; i++)
    {
        for(int j=n+1; j>=i+2; j--)
        {
            for(int k=0; k<=i+n-j+1; k++)
            {
                if(Dp[0][i][j][k]==1e18 && Dp[1][i][j][k]==1e18)
                    continue;

                propag(0,i+1,j,k,Dp[0][i][j][k]+Poz[i+1]-Poz[i]);
                propag(1,i,j-1,k,Dp[0][i][j][k]+Poz[i]+l-Poz[j-1]);
                propag(1,i,j-1,k,Dp[1][i][j][k]+Poz[j]-Poz[j-1]);
                propag(0,i+1,j,k,Dp[1][i][j][k]+l-Poz[j]+Poz[i+1]);
            }
        }
    }

    int rez=0;
    for(int i=0; i<=n; i++)
    {
        for(int j=rez+1; j<=n; j++)
        {
            if(Dp[0][i][i+1][j]!=1e18 || Dp[1][i][i+1][j]!=1e18)
                rez=j;
        }
    }
    cout<<rez<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...