Submission #660987

# Submission time Handle Problem Language Result Execution time Memory
660987 2022-11-23T19:01:02 Z urosk Toy Train (IOI17_train) C++14
22 / 100
2000 ms 68684 KB
#include "train.h"
#define dbg(x) cerr<<#x<<": "<<x<<endl
#define here cerr<<"===================================\n"
#include <bits/stdc++.h>
#define ll int
#define sz(a) (ll)(a.size())
#define pb push_back
#define popb pop_back
#define all(a) a.begin(),a.end()
#define llinf 1000000000LL
#define fi first
#define sc second
#define pll pair<ll,ll>
#define endl '\n'
#define ceri(a,l,r) {cerr<<#a<<": ";for(ll i_ = l;i_<=r;i_++) cerr<<a[i_]<< " ";cerr<<endl;}
using namespace std;
#define maxn 5005
ll n,m,it;
vector<ll> ans;
vector<ll> g[maxn];
vector<ll> cur;
ll b[maxn];
bool c[maxn];
bool vis[maxn];
bool naso = 0;
bool ok[maxn];
ll cnt = 0;
ll in[maxn],out[maxn];
void dfs(ll u,ll poc){
    vis[u] = 1;
    for(ll s : g[u]){
        if(c[s]) continue;
        if(s==poc){
            naso = 1;
            return;
        }
        if(vis[s]) continue;
        dfs(s,poc);
        if(naso) return;
    }
}
void dfs2(ll u,ll poc){
    if(c[u]) cnt++;
    vis[u] = 1;
    for(ll s : g[u]){
        if((s==poc)&&(cnt>0)){
            naso = 1;
            return;
        }
        if(vis[s]) continue;
        dfs2(s,poc);
        if(naso) return;
    }
    if(c[u]) cnt--;
}
void dfs3(ll u){
    vis[u] = 1;
    for(ll s : g[u]){
        if(vis[s]) continue;
        dfs3(s);
        ok[u]|=ok[s];
    }
}
bool dfs4(ll u){
    bool tu = 0;
    for(ll s : g[u]) if(s==u) tu = 1;
    if(!tu){
        if(sz(g[u])==0){
            while(1) here;
        }
        return dfs4(g[u][0]);
    }
    if(!b[u]&&!c[u]) return 0;
    if(b[u]&&c[u]) return 1;
    for(ll s : g[u]){
        if(s!=u) return dfs4(s);
    }
}
vector<int> who_wins(vector<int> a,vector<int> r,vector<int> u,vector<int> v) {
    reverse(all(u)); u.pb(-1); reverse(all(u));
    reverse(all(v)); v.pb(-1); reverse(all(v));
    reverse(all(r)); r.pb(-1); reverse(all(r));
    ll sum = 0; for(ll x : a) sum+=x;
    n = sz(a);
    reverse(all(a)); a.pb(-1); reverse(all(a));
    for(ll i = 1;i<=n;i++) b[i] = a[i];
    m = sz(u)-1;
    bool sub1 = 1;
    for(ll i = 1;i<=n;i++) c[i] = r[i];
    for(ll i = 1;i<=m;i++){
        u[i]++; v[i]++;
        ll x = u[i]; ll y = v[i];
        g[x].pb(y);
        sub1&=((x==y)||(y-x==1));
    }
    if(sum==0){
        for(ll i = 1;i<=n;i++){
            if(c[i]) continue;
            for(ll j = 1;j<=n;j++) vis[j] = 0;
            naso = 0;
            dfs(i,i);
            if(naso) ok[i] = 1;
        }
        for(ll i = 1;i<=n;i++){
            for(ll j = 1;j<=n;j++) vis[j] = 0;
            dfs3(i);
        }
        for(ll i = 1;i<=n;i++) ans.pb(1^ok[i]);
        return ans;
    }
    if(sum==n){
        for(ll i = 1;i<=n;i++){
            for(ll j = 1;j<=n;j++) vis[j] = 0;
            naso = 0;
            cnt = 0;
            dfs2(i,i);
            if(naso) ok[i] = 1;
        }
        for(ll i = 1;i<=n;i++){
            for(ll j = 1;j<=n;j++) vis[j] = 0;
            dfs3(i);
        }
        for(ll i = 1;i<=n;i++) ans.pb(ok[i]);
        return ans;
    }
    if(sub1){
        for(ll i = 1;i<=n;i++){
            for(ll j = 1;j<=n;j++) vis[j] = 0;
            ok[i] = dfs4(i);
        }
        for(ll i = 1;i<=n;i++) ans.pb(ok[i]);
        return ans;
    }
	return {};
}

/*
4 6
0 0 0 0
0 1 0 0
0 1
0 2
0 3
1 2
1 3
2 3
*/

Compilation message

train.cpp: In function 'bool dfs4(int)':
train.cpp:78:1: warning: control reaches end of non-void function [-Wreturn-type]
   78 | }
      | ^
# Verdict Execution time Memory Grader output
1 Execution timed out 2087 ms 68684 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 340 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 262 ms 1404 KB Output is correct
2 Correct 263 ms 1360 KB Output is correct
3 Correct 256 ms 1332 KB Output is correct
4 Correct 1144 ms 1284 KB Output is correct
5 Correct 948 ms 1356 KB Output is correct
6 Correct 838 ms 1132 KB Output is correct
7 Correct 682 ms 1108 KB Output is correct
8 Correct 457 ms 1128 KB Output is correct
9 Correct 408 ms 1124 KB Output is correct
10 Correct 550 ms 1076 KB Output is correct
11 Correct 472 ms 1060 KB Output is correct
12 Correct 39 ms 1064 KB Output is correct
13 Correct 1551 ms 1304 KB Output is correct
14 Correct 1616 ms 1356 KB Output is correct
15 Correct 1626 ms 1308 KB Output is correct
16 Correct 1120 ms 1304 KB Output is correct
17 Correct 1167 ms 1284 KB Output is correct
18 Correct 496 ms 1108 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 659 ms 1108 KB Output is correct
2 Correct 198 ms 1020 KB Output is correct
3 Correct 377 ms 1112 KB Output is correct
4 Correct 367 ms 1096 KB Output is correct
5 Correct 527 ms 1124 KB Output is correct
6 Correct 471 ms 1108 KB Output is correct
7 Correct 459 ms 1088 KB Output is correct
8 Correct 328 ms 1064 KB Output is correct
9 Correct 25 ms 1044 KB Output is correct
10 Correct 866 ms 1300 KB Output is correct
11 Correct 889 ms 1300 KB Output is correct
12 Correct 850 ms 1300 KB Output is correct
13 Correct 703 ms 1172 KB Output is correct
14 Correct 417 ms 1076 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 1108 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 2087 ms 68684 KB Time limit exceeded
2 Halted 0 ms 0 KB -