# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
286525 | stoyan_malinin | Toy Train (IOI17_train) | C++14 | 9 ms | 1280 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "train.h"
//#include "grader.cpp"
#include <vector>
#include <assert.h>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std;
const int MAXN = 5005;
int n;
vector <int> adj[MAXN];
int owner[MAXN], charging[MAXN];
int guessSubtask(vector <int> a, vector <int> r, vector <int> u, vector <int> v)
{
bool sub1 = true;
for(int i = 0;i<u.size();i++)
{
if(u[i]!=v[i] && u[i]+1!=v[i])
{
sub1 = false;
break;
}
}
if(sub1==true) return 1;
}
vector <int> solve1()
{
vector <int> res(n, -1);
for(int s = 0;s<n;s++)
{
int x = s;
while(true)
{
int goal = -1;
if(owner[x]==1)
{
if(charging[x]==1) goal = x;
else goal = x + 1;
bool found = false;
for(int y: adj[x])
{
if(y==goal)
{
found =true;
break;
}
}
if(found==true)
{
if(goal==x)
{
res[s] = true;
break;
}
else
{
x = x + 1;
}
}
else
{
res[s] = false;
break;
}
}
else
{
if(charging[x]==1) goal = x + 1;
else goal = x;
bool found = false;
for(int y: adj[x])
{
if(y==goal)
{
found =true;
break;
}
}
if(found==true)
{
if(goal==x)
{
res[s] = false;
break;
}
else
{
x = x + 1;
}
}
else
{
res[x] = true;
break;
}
}
}
}
return res;
}
vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v)
{
n = a.size();
for(int i = 0;i<n;i++)
{
owner[i] = a[i];
charging[i] = r[i];
}
for(int i = 0;i<u.size();i++)
{
adj[ u[i] ].push_back(v[i]);
}
for(int i = 0;i<n;i++)
{
sort(adj[i].begin(), adj[i].end());
auto it = unique(adj[i].begin(), adj[i].end());
adj[i].resize(it-adj[i].begin());
}
int subtask = guessSubtask(a, r, u, v);
if(subtask==1) return solve1();
assert(false);
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |