#include <bits/stdc++.h>
// #pragma GCC optimize("O3, unroll-loops")
// #pragma GCC target("avx2")
// #define int long long
using namespace std;
#define _upgrade \
ios_base::sync_with_stdio(0); \
cin.tie(0); \
cout.tie(0);
#define LINE "---------------------\n"
#define ALL(A) A.begin(), A.end()
#define LLA(A) A.rbegin(), A.rend()
#define Q queue
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define ub upper_bound
#define sz(x) (int)x.size()
#define chmin(a,b) a=min(a,b)
#define chmax(a,b) a=max(a,b)
using db = double;
using ld = long double;
using sint = short int;
using ll = long long;
using uint = unsigned int;
// PQ going up <int, VI, greater<int> >
using VI = vector<int>;
using VVI = vector<VI>;
using VVVI = vector<VVI>;
using VB = vector<bool>;
using VVB = vector<VB>;
using VVVB = vector<VVB>;
using VLL = vector<ll>;
using VVLL = vector<VLL>;
using PII = pair<int, int>;
using VPI = vector<PII>;
using VVPI = vector<VPI>;
using PLL = pair<ll, ll>;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
int strToInt(string&a) {
stringstream x(a);
int b;
x >> b;
return b;
}
int gcd(int a, int b) {
if (b == 0) return a;
return gcd(b, a % b);
}
/*
| _
| __ _ | |
| | \| | ___ ___ | |_
| | |\ | |/ _ \/ __/| __|
| | | \ | __/\__ \| |_
| |_| \_|\___ /___/ \__|
| _ _ _
| (_) | | | |
| _ __ _ __ ___ __ _ _ __ __ _ _ __ ___ _ __ ___ _ ___ ___| |_| |_
| | '_ \| '__/ _ \ / _` | '__/ _` | '_ ` _ \| '_ ` _ \| / __/ __| __| __|
| | |_) | | | (_) | (_| | | | (_| | | | | | | | | | | | \__ \__ \ |_| |_
| | .__/|_| \___/ \__, |_| \__,_|_| |_| |_|_| |_| |_|_|___/___/\__|\__|
| | | __/ |
| |_| |___/ _
| _ (_)
| _ __ ___ __ _ ____ __ _ __ _| | __ _ _
| | '_ ` _ \ / _` |_ / _` |/ _` | |/ _` | |
| | | | | | | (_| / / (_| | (_| | | (_| | |
| |_| |_| |_|\__,_|____\__,_|\__,_|_|\__,_|_|
*/
const db PI = acos(-1.0); //M_PI;
const ll INFF = 4e18;
const int INF = 1.07e9;
const int MOD = 1e9 + 7;
const int MOD1 = 998244353; //7*19*2^23 +1;
const int dx[] = {-1, 0, 1, 0, -1, -1, 1, 1};
const int dy[] = {0, 1, 0, -1, -1, 1, -1, 1};
const int N = 500 + 5;
const int M = 2e5 + 5;
int nums[N];
int n, m, k, q, type;
string s;
vector <int> paths[N];
PII dp[N][N][2];
bool mid(int l, int r, int val) {
if (l == val || val == r) return 0;
if (l < r) return (l <= val && val <= r);
return (
(l < val && val < n) ||
(l > val && val < r)
);
}
void go () {
cin >> n >> type;
for (int i = 1, x; i <= n; i++) {
while(cin >> x && x != 0) paths[i].pb(x);
}
for (int i = 1; i <= n; i++)
for (auto el : paths[i]) {
dp[el][i][0] = dp[i][el][1] = {1, i};
}
PII ans = {0, 1};
for (int d = n-1; d > 0; d--)
for (int l = 1, r = l+d; l <= r; l++, r++) {
if (r > n) r = 1;
chmax(ans, max(dp[l][r][0], dp[l][r][1]));
dp[l][r][0].ff++;
dp[l][r][1].ff++;
// cout << l << ',' << r << ": " << max(dp[l][r][0], dp[l][r][1]) << '\n';
for (auto el : paths[l]) {
if (mid(l, r, el)) {
// cout << "\t" << el << ": " << dp[l][el][1] << ',' << dp[el][r][0] << '\n';
chmax(dp[l][el][1], dp[l][r][0]);
chmax(dp[el][r][0], dp[l][r][0]);
}
}
for (auto el : paths[r]) {
if (mid(l, r, el)) {
// cout << "\t" << el << ": " << dp[l][el][1] << ',' << dp[el][r][0] << '\n';
chmax(dp[l][el][1], dp[l][r][1]);
chmax(dp[el][r][0], dp[l][r][1]);
}
}
}
cout << ans.ff << '\n' << ans.ss << '\n';
}
signed main () {
#ifndef ONLINE_JUDGE
// freopen("0.in", "r", stdin);
// freopen("0.out", "w", stdout);
#endif
_upgrade
int T = 1;
while(T--) go();
return (0-0); //<3
}
/* stuff you should look for
* int overflow, array bounds
* special cases (n=1?)
*/
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
340 KB |
Output is correct |
2 |
Incorrect |
1 ms |
340 KB |
Output isn't correct |
3 |
Incorrect |
1 ms |
472 KB |
Output isn't correct |
4 |
Incorrect |
1 ms |
468 KB |
Output isn't correct |
5 |
Incorrect |
1 ms |
596 KB |
Output isn't correct |
6 |
Incorrect |
1 ms |
608 KB |
Output isn't correct |
7 |
Incorrect |
2 ms |
724 KB |
Output isn't correct |
8 |
Incorrect |
1 ms |
736 KB |
Output isn't correct |
9 |
Incorrect |
3 ms |
852 KB |
Output isn't correct |
10 |
Correct |
6 ms |
980 KB |
Output is correct |
11 |
Incorrect |
4 ms |
852 KB |
Output isn't correct |
12 |
Incorrect |
11 ms |
1748 KB |
Output isn't correct |
13 |
Incorrect |
16 ms |
2800 KB |
Output isn't correct |
14 |
Incorrect |
28 ms |
3540 KB |
Output isn't correct |
15 |
Incorrect |
87 ms |
4436 KB |
Output isn't correct |
16 |
Incorrect |
114 ms |
4692 KB |
Output isn't correct |
17 |
Incorrect |
87 ms |
4564 KB |
Output isn't correct |
18 |
Incorrect |
43 ms |
4380 KB |
Output isn't correct |
19 |
Incorrect |
133 ms |
4712 KB |
Output isn't correct |
20 |
Incorrect |
138 ms |
4704 KB |
Output isn't correct |