제출 #1024555

#제출 시각아이디문제언어결과실행 시간메모리
1024555huutuan장난감 기차 (IOI17_train)C++14
5 / 100
2054 ms98896 KiB
#include "train.h" #include <bits/stdc++.h> using namespace std; const int N=5010; vector<int> g[N]; int d[N][N]; vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) { int n=a.size(), m=u.size(); bool sub1=1; for (int i=0; i<m; ++i) sub1&=u[i]==v[i] || u[i]+1==v[i]; if (sub1){ vector<int> ans(n), cyc(n); for (int i=0; i<m; ++i) if (u[i]==v[i]) cyc[u[i]]|=1; else cyc[u[i]]|=2; for (int i=n-1; i>=0; --i){ if (cyc[i]==1){ ans[i]=r[i]; }else if (cyc[i]==2){ ans[i]=ans[i+1]; }else{ if (a[i]) ans[i]=r[i] || ans[i+1]; else ans[i]=r[i] && ans[i+1]; } } return ans; } for (int i=0; i<m; ++i) d[u[i]][v[i]]=1; for (int k=0; k<n; ++k){ for (int i=0; i<n; ++i) for (int j=0; j<n; ++j) d[i][j]|=d[i][k] && d[k][j]; } vector<int> ans(n); for (int i=0; i<n; ++i){ for (int j=0; j<n; ++j) if (a[j]) ans[i]|=d[i][j] && d[j][j]; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...