Submission #887170

#TimeUsernameProblemLanguageResultExecution timeMemory
887170VicBVicSailing Race (CEOI12_race)C++17
10 / 100
47 ms1628 KiB
#include <bits/stdc++.h>

using namespace std;

const int MN = 505;

int d[MN][MN];
int n,k;
bool adj[MN][MN];

int main()
{
    cin>>n>>k;
    assert(k==0);
    for(int i=1;i<=n;i++)
    {
        int nr=-1;
        while(true)
        {
            cin>>nr;
            if(!nr) break;
            adj[i][nr]=1;
        }
    }

    for(int l=1;l<n;l++)
    {
        for(int i=1;i+l<=n;i++)
        {
            int j=i+l;
            for(int y=i+1;y<=j;y++)
            {
                if(adj[i][y]) d[i][j]=max(d[i][j],1 + max( d[y][i+1], d[y][j]));
            }

            for(int y=j-1;y>=i;y--)
            {
                if(adj[j][y]) d[j][i]=max(d[j][i],1 + max( d[y][j-1], d[y][i]));
            }
        }
    }
    int mx=0, mxc=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            if(d[i][j]>mx) mx=d[i][j], mxc=i;
        }
    }
    cout<<mx<<'\n'<<mxc<<'\n';
    return 0;
}
/*
7 0
5 0
5 0
7 0
3 0
4 0
4 3 0
2 1 0
5 2
*/
#Verdict Execution timeMemoryGrader output
Fetching results...