Submission #364147

#TimeUsernameProblemLanguageResultExecution timeMemory
364147super_j6Sailing Race (CEOI12_race)C++14
40 / 100
554 ms8556 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, m;
int dp[mxn][mxn][2];
vector<int> g[mxn];
 
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	
	cin >> n >> m;
	
	for(int i = 0, x; i < n; i++)
	for(cin >> x; x; cin >> x)
	for(int j = 0; j < 2; j++)
	for(int l = 0; l < 2; l++){
		g[l * n + x - 1].push_back(j * n + i);
	}
	
	int ret = 0, x = 0;
	for(int i[2] = {0}; i[1] < 2 * n; i[1]++)
	for(i[0] = i[1]; ~i[0] && i[1] - i[0] < n; i[0]--)
	for(int j = 0; j < 2; j++){
		int &dpc = dp[i[0]][i[1]][j];
		if(dpc > ret) ret = dpc, x = i[j];
		for(int k : g[i[j]])
		for(int l = 0, ii[2]; l < 2; l++) if((k > i[l]) == l){
			ii[l] = k, ii[!l] = i[!l];
			dp[ii[0]][ii[1]][l] = max(dp[ii[0]][ii[1]][l], dpc + 1);
		}
	}
	
	cout << ret << " " << (x % n + 1) << endl;
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...