답안 #827277

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
827277 2023-08-16T10:31:29 Z tranxuanbach 장난감 기차 (IOI17_train) C++17
컴파일 오류
0 ms 0 KB
#include "train.h"

#include <bits/stdc++.h>
using namespace std;

#define fi first
#define se second
#define For(i, l, r) for (auto i = (l); i < (r); i++)
#define ForE(i, l, r) for (auto i = (l); i <= (r); i++)
#define FordE(i, l, r) for (auto i = (l); i >= (r); i--)
#define bend(a) (a).begin(), (a).end()
#define isz(a) ((int)(a).size())

struct edge_t{
	int from, to;
};

const int N = 5e3 + 5, M = 2e4 + 5;

int n, m;
int a[N]; // true = A, false = B
bool b[N]; // is charging station
edge_t edge[N];
vector <int> adj[N], radj[N];

namespace subtask1{
	bool check(){
		For(i, 0, m){
			if (not (edge[i].from == edge[i].to or edge[i].from + 1 == edge[i].to)){
				return false;
			}
		}
		return true;
	}

	vector <int> solve(){
		vector <bool> has_self_loop(n, false);
		For(i, 0, m){
			if (edge[i].from == edge[i].to){
				has_self_loop[edge[i].from] = true;
			}
		}
		vector <int> ans(n);
		ans[n - 1] = b[n - 1];
		FordE(u, n - 2, 0){
			if (a[u] and b[u] and has_self_loop[u]){
				ans[u] = 1;
			}
			else if (not a[u] and not b[u] and has_self_loop[u]){
				ans[u] = 0;
			}
			else{
				ans[u] = ans[u + 1];
			}
		}
		return ans;
	}
}

vector <int> who_wins(vector <int> _a, vector <int> _r, vector <int> _u, vector <int> _v){
	n = isz(_a); m = isz(_u);
	For(u, 0, n){
		a[u] = _a[u];
		b[u] = _r[u];
	}
	For(i, 0, m){
		int u = _u[i], v = _v[i];
		edge[i] = edge_t{u, v};
		adj[u].emplace_back(i);
		radj[v].emplace_back(i);
	}
	if (subtask1::check()){
		return subtask1::solve();
	}
	return vi(n);
}

Compilation message

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:75:9: error: 'vi' was not declared in this scope; did you mean 'fi'?
   75 |  return vi(n);
      |         ^~
      |         fi