Submission #293207

#TimeUsernameProblemLanguageResultExecution timeMemory
293207eohomegrownappsToy Train (IOI17_train)C++14
5 / 100
8 ms768 KiB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;

int n,m;
/*
vector<int> adjlist;
vector<int> revadjlist;

vector<int> status;

void dfs(int node){
	status[node]=1;
	for (int i : adjlist[node]){
		if (status[i]!=0){

		}
	}
	status[node]=2;
}

vector<int> aall(vector<int> &charging, vector<int> &u, vector<int> &v){
	adjlist.resize(n);
	for (int i = 0; i<m; i++){
		adjlist[u[i]].push_back(v[i]);
	}

	status.resize(n,0);
	for (int i = 0; i<m; i++){
		cycle
	}
}

vector<int> ball(vector<int> &charging, vector<int> &u, vector<int> &v){
	return vector<int>();
}*/

std::vector<int> who_wins(std::vector<int> aowns, std::vector<int> charging, std::vector<int> u, std::vector<int> v) {
	n=aowns.size();
	m=u.size();
	int numa = 0;
	for (int i : aowns){
		numa+=i;
	}
	/*if (numa==n){
		return aall(charging,u,v);
	}
	if (numa==0){
		return ball(charging,u,v);
	}*/

	vector<bool> iscycle(n);
	vector<bool> edgetonext(n,false);
	for (int i = 0; i<m; i++){
		if (u[i]==v[i]){
			iscycle[u[i]]=true;
		} else {
			edgetonext[u[i]]=true;
		}
	}
	vector<int> ans(n);
	for (int i = n-1; i>=0; i--){
		if (iscycle[i]){
			if (aowns[i]&&charging[i]){
				ans[i]=1;
			} else if ((!aowns[i])&&(!charging[i])){
				ans[i]=0;
			} else {
				if (!edgetonext[i]){
					if (charging[i]){
						ans[i]=1;
					} else {
						ans[i]=0;
					}
				} else {
					ans[i]=ans[i+1];
				}
			}
		} else {
			ans[i]=ans[i+1];
		}
	}
	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...