# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
285171 | CaroLinda | Sailing Race (CEOI12_race) | C++14 | 65 ms | 2432 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#define sz(x) (int)x.size()
#define mkt make_tuple
#define lp(i,a,b) for(int i = a ; i < b ; i++ )
#define ff first
#define ss second
#define eb push_back
#define ll long long
#define mk make_pair
#define pii pair<int,int>
#define debug printf
#define all(x) x.begin(),x.end()
const int MAXN = 510 ;
using namespace std ;
int N , K ;
int t[2] = {-1,1} ;
int dp[MAXN][MAXN][2] ;
vector<int> adj[MAXN] ;
bool isInside(int x, int L , int R , int type )
{
if(type == -1) swap(L,R) , type = 1 ;
if( L > R ) return (L <= x || x <= R ) ;
return L <= x && x <= R ;
}
void caso0()
{
int ans = 0 ;
for(int diff = 1 ; diff < N ; diff++ )
for(int i = 0 ; i < N ; i++ )
for(int j = 0 ; j < 2 ; j++ )
{
int R = ( i + diff * t[j] + N ) % N ;
int &ptr = dp[i][R][j] ;
ptr = 0 ;
//cout << i << " " << R << endl ;
for(int viz : adj[i] )
{
if(!isInside(viz, i , R, t[j] ) ) continue ;
//cout << "A ponta " << viz << " ta dentro" << endl ;
ptr = max(ptr, 1 + dp[viz][R][j] ) ;
ptr = max(ptr, 1 + dp[viz][ i+t[j] ][ !j ] ) ;
}
ans = max(ans, ptr) ;
}
/* for(int i = 0 ; i < N ; i++)
{
debug("dp %d:\n" , i ) ;
for(int j = 0 ; j < N ; j++ ) debug("(%d,%d) e (%d, %d)\n", j, dp[i][j][0] ,j, dp[i][j][1] ) ;
debug("\n") ;
} */
printf("%d\n" , ans ) ;
exit(0) ;
}
int main()
{
scanf("%d%d", &N , &K ) ;
for(int i = 0 , x ; i < N ; i++ )
while( scanf("%d", &x) && x != 0 ) adj[i].push_back(x-1) ;
if(K == 0) caso0() ;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |