Submission #364099

#TimeUsernameProblemLanguageResultExecution timeMemory
364099super_j6Sailing Race (CEOI12_race)C++14
10 / 100
330 ms12012 KiB
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
#define endl '\n'
#define ll long long
#define pi pair<int, int>
#define f first
#define s second
 
const int mxn = 1000;
int n, k;
int g[mxn][mxn];
int dp[mxn][mxn][2];
vector<int> gr[mxn];
 
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> k;
	
	for(int i = 0, x; i < n; i++){
		for(int j = 0; j < 2; j++) g[j * n + i][j * n + i] = 1;
		for(cin >> x; x; cin >> x)
		for(int j = 0; j < 2; j++)
		for(int l = 0; l < 2; l++){
			int u = j * n + i, v = l * n + x - 1;
			if(abs(u - v) < n){
				g[u][v] = 1;
				gr[u].push_back(v);
			}
		}
	}
	
	int ret = 0, x = 0;
	for(int i[2] = {0}; i[0] < 2 * n; i[0]++)
	for(i[1] = i[0]; i[1] < 2 * n && i[1] - i[0] < n; i[1]++)
	for(int j = 0; j < 2; j++){
		int &dpc = dp[i[0]][i[1]][j];
		for(int p = 0; p < 2; p++) if(g[i[j]][i[p]])
		for(int l : gr[i[p]]) if(l >= i[0] && l <= i[1] && l != i[j]){
			int ii[2];
			ii[j] = l, ii[!j] = i[!j];
			dpc = max(dpc, dp[ii[0]][ii[1]][p] + 1);
		}
		if(dpc > ret) ret = dpc, x = i[j];
	}
	
	cout << ret << " " << (x % n + 1) << endl;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...