# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
1091110 | vjudge1 | Sailing Race (CEOI12_race) | C++17 | 174 ms | 2792 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
using namespace std;
const int N = 505;
int n, md[N][N], mdc[N][N], ed[N][N], edc[N][N];
vector <int> graph[N];
signed main() {
ios::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
char c;
cin >> n >> c;
for (int i = 0; i < n; i++) {
int m;
do {
cin >> m;
graph[i].push_back(m - 1);
} while (m);
}
for (int sz = 1; sz <= n; sz++) {
for (int i = 0; i < n; i++) {
for (int &B : graph[i]) {
int A = (i + sz) % n;
if ((B + n - i) % n < sz) {
if (md[B][A] > 0 && md[B][A] >= md[i][A]) md[i][A] = md[B][A] + 1;
if (ed[B][A] >= ed[i][A]) ed[i][A] = ed[B][A] + 1;
if (edc[B][i] >= edc[i][A]) edc[i][A] = edc[B][i] + 1;
}
A = (i + n - sz) % n;
if ((i + n - B) % n < sz) {
if (mdc[B][A] > 0 && mdc[B][A] >= mdc[i][A]) mdc[i][A] = mdc[B][A] + 1;
if (edc[B][A] >= edc[i][A]) edc[i][A] = edc[B][A] + 1;
if (ed[B][i] >= ed[i][A]) ed[i][A] = ed[B][i] + 1;
}
}
}
}
int mx = 0, mxi;
for (int i = 0; i < n - 1; i++) {
if (ed[i][i] > mx) {
mx = ed[i][i];
mxi = i;
}
if (edc[i][i] > mx) {
mx = edc[i][i];
mxi = i;
}
}
cout << mx << '\n' << mxi + 1;
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |