제출 #291417

#제출 시각아이디문제언어결과실행 시간메모리
291417abyyskit장난감 기차 (IOI17_train)C++14
15 / 100
2067 ms1152 KiB
#include "train.h" #include<bits/stdc++.h> using namespace std; #define FOR(i, x, y) for(int i = x; i < y; ++i) #define pb push_back struct node{ vector<int> e; bool charge = false; bool A = false; bool vis = false; int time = INT_MAX; }; vector<node> g; vector<int> subtask1(){ vector<int> ans(g.size(), 0); for(int i = g.size() - 1; i >= 0; --i){ if (g[i].A){ ans[i] = 0; } else{ ans[i] = 1; } FOR(j, 0, g[i].e.size()){ int nex = g[i].e[j]; // cout << "nex: " << nex << "\n"; if (g[i].A){ if (g[i].charge && nex == i){ ans[i] = 1; break; } if (nex != i){ ans[i] = max(ans[i], ans[i + 1]); } } else{ if (nex == i){ if (!g[i].charge){ ans[i] = 0; break; } } else{ ans[i] = min(ans[i], ans[i + 1]); } } } } return ans; } int s2dfs(int start, int prev){ g[start].vis = true; if (g[start].charge){ prev = g[start].time; } int ans; if (g[start].A){ ans = 0; } else{ ans = 1; } FOR(i, 0, g[start].e.size()){ int nex = g[start].e[i]; if (!g[nex].vis){ g[nex].time = g[start].time + 1; int tmp = s2dfs(nex, prev); if (g[start].A){ ans = max(ans, tmp); } else{ ans = min(ans, tmp); } } else{ if (g[nex].time <= prev){ if (g[start].A){ ans = 1; } } else{ if (!g[start].A){ ans = 0; } } } } g[start].time = INT_MAX; g[start].vis = false; return ans; } vector<int> subtask2(){ vector<int> ans(g.size(), 0); FOR(i, 0, g.size()){ g[i].time = 0; ans[i] = s2dfs(i, -1); g[i].time = INT_MAX; } return ans; } vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v){ g.resize(a.size()); FOR(i, 0, u.size()){ g[u[i]].e.pb(v[i]); } // cout << "here\n"; FOR(i, 0, a.size()){ if (a[i] == 1){ g[i].A = true; } if (r[i] == 1){ g[i].charge = true; } } // cout << "here2" << "\n"; return subtask2(); }

컴파일 시 표준 에러 (stderr) 메시지

train.cpp: In function 'std::vector<int> subtask1()':
train.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
   27 |   FOR(j, 0, g[i].e.size()){
      |       ~~~~~~~~~~~~~~~~~~~              
train.cpp:27:3: note: in expansion of macro 'FOR'
   27 |   FOR(j, 0, g[i].e.size()){
      |   ^~~
train.cpp: In function 'int s2dfs(int, int)':
train.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
   67 |  FOR(i, 0, g[start].e.size()){
      |      ~~~~~~~~~~~~~~~~~~~~~~~           
train.cpp:67:2: note: in expansion of macro 'FOR'
   67 |  FOR(i, 0, g[start].e.size()){
      |  ^~~
train.cpp: In function 'std::vector<int> subtask2()':
train.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<node>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
  100 |  FOR(i, 0, g.size()){
      |      ~~~~~~~~~~~~~~                    
train.cpp:100:2: note: in expansion of macro 'FOR'
  100 |  FOR(i, 0, g.size()){
      |  ^~~
train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
  110 |  FOR(i, 0, u.size()){
      |      ~~~~~~~~~~~~~~                    
train.cpp:110:2: note: in expansion of macro 'FOR'
  110 |  FOR(i, 0, u.size()){
      |  ^~~
train.cpp:4:39: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    4 | #define FOR(i, x, y) for(int i = x; i < y; ++i)
......
  114 |  FOR(i, 0, a.size()){
      |      ~~~~~~~~~~~~~~                    
train.cpp:114:2: note: in expansion of macro 'FOR'
  114 |  FOR(i, 0, a.size()){
      |  ^~~
#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...