Submission #405766

#TimeUsernameProblemLanguageResultExecution timeMemory
405766peuchToy Train (IOI17_train)C++17
0 / 100
495 ms50000 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; const int MAXN = 5e5; int n; int marc[MAXN]; int pode[MAXN]; int bom[MAXN]; vector<int> ar[MAXN]; vector<int> rev[MAXN]; bool haveCycle(int cur, int ori){ marc[cur] = 1; for(int i = 0; i < ar[cur].size(); i++){ int viz = ar[cur][i]; if(viz == ori) return true; if(marc[viz]) continue; if(pode[viz]) continue; if(haveCycle(viz, ori)) return true; } return false; } bool dfs(int cur){ marc[cur] = 1; for(int i = 0; i < rev[cur].size(); i++){ int viz = rev[cur][i]; if(marc[viz]) continue; dfs(viz); } } vector<int> sub1(std::vector<int> a, std::vector<int> r){ vector<int> w(n, 0); for(int i = n - 1; i >= 0; i--){ if(ar[i].size() == 2){ if(a[i]){ if(r[i]) w[i] = 1; else w[i] = w[i + 1]; } else{ if(r[i]) w[i] = w[i + 1]; else w[i] = 0; } } else if(ar[i][0] == i) w[i] = r[i]; else w[i] = w[i + 1]; } return w; } vector<int> sub2(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v){ vector<int> w(n, 0); return w; } vector<int> sub3(std::vector<int> a, std::vector<int> r){ vector<int> w; for(int i = 0; i < r.size(); i++){ if(!r[i]) continue; for(int j = 0; j < r.size(); j++) marc[j] = 0; bom[i] = haveCycle(i, i); } for(int j = 0; j < n; j++) marc[j] = 0; for(int i = 0; i < n; i++) if(bom[i]) dfs(i); for(int i = 0; i < n; i++) w.push_back(marc[i]); return w; } vector<int> sub4(std::vector<int> a, std::vector<int> r){ vector<int> w(n, 0); for(int j = 0; j < r.size(); j++) pode[j] = r[j]; for(int i = 0; i < n; i++){ if(r[i]) continue; for(int j = 0; j < n; j++) marc[j] = 0; bom[i] = haveCycle(i, i); } for(int j = 0; j < n; j++) marc[j] = 0; for(int i = 0; i < n; i++) if(bom[i]) dfs(i); for(int i = 0; i < n; i++) w.push_back(!marc[i]); return w; } vector<int> sub5(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v){ vector<int> w(n, 0); return w; } std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) { n = a.size(); for(int i = 0; i < u.size(); i++){ ar[u[i]].push_back(v[i]); rev[v[i]].push_back(u[i]); } return sub3(a, r); // if(n <= 15) return sub2(a, r, u, v); bool flag = true; for(int i = 0; i < n; i++) flag &= a[i]; if(flag) return sub3(a, r); flag = true; for(int i = 0; i < n; i++) flag &= !a[i]; if(flag) return sub4(a, r); int cnt = 0; for(int i = 0; i < n; i++) cnt += r[i]; // if(cnt == 1) return sub5(a, r, u, v); return sub1(a, r); }

Compilation message (stderr)

train.cpp: In function 'bool haveCycle(int, int)':
train.cpp:18:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   18 |  for(int i = 0; i < ar[cur].size(); i++){
      |                 ~~^~~~~~~~~~~~~~~~
train.cpp: In function 'bool dfs(int)':
train.cpp:30:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   30 |  for(int i = 0; i < rev[cur].size(); i++){
      |                 ~~^~~~~~~~~~~~~~~~~
train.cpp:35:1: warning: no return statement in function returning non-void [-Wreturn-type]
   35 | }
      | ^
train.cpp: In function 'std::vector<int> sub3(std::vector<int>, std::vector<int>)':
train.cpp:64:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |  for(int i = 0; i < r.size(); i++){
      |                 ~~^~~~~~~~~~
train.cpp:66:20: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |   for(int j = 0; j < r.size(); j++)
      |                  ~~^~~~~~~~~~
train.cpp: In function 'std::vector<int> sub4(std::vector<int>, std::vector<int>)':
train.cpp:81:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   81 |  for(int j = 0; j < r.size(); j++)
      |                 ~~^~~~~~~~~~
train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:106:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
  106 |  for(int i = 0; i < u.size(); i++){
      |                 ~~^~~~~~~~~~
#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...