Submission #407781

# Submission time Handle Problem Language Result Execution time Memory
407781 2021-05-19T04:35:01 Z balbit Toy Train (IOI17_train) C++14
17 / 100
2000 ms 1420 KB
#include "train.h"

#include <bits/stdc++.h>
using namespace std;
//#define BALBIT
#define ll long long
#define y1 zck_is_king
#define pii pair<int, int>
#define ull unsigned ll
#define f first
#define s second
#define ALL(x) x.begin(),x.end()
#define SZ(x) (int)x.size()
#define SQ(x) (x)*(x)
#define MN(a,b) a = min(a,(__typeof__(a))(b))
#define MX(a,b) a = max(a,(__typeof__(a))(b))
#define pb push_back
#define REP(i,n) for (int i = 0; i<n; ++i)
#define RREP(i,n) for (int i = n-1; i>=0; --i)
#define REP1(i,n) for (int i = 1; i<=n; ++i)
#define SORT_UNIQUE(c) (sort(c.begin(),c.end()), c.resize(distance(c.begin(),unique(c.begin(),c.end()))))
#ifdef BALBIT
#define IOS()
#define bug(...) fprintf(stderr,"#%d (%s) = ",__LINE__,#__VA_ARGS__),_do(__VA_ARGS__);
template<typename T> void _do(T &&x){cerr<<x<<endl;}
template<typename T, typename ...S> void _do(T &&x, S &&...y){cerr<<x<<", ";_do(y...);}
#else
#define IOS() ios_base::sync_with_stdio(0);cin.tie(0);
#define endl '\n'
#define bug(...)
#endif

const int iinf = 1e9+10;
const ll inf = 1ll<<60;
const ll mod = 1e9+7 ;


void GG(){cout<<"0\n"; exit(0);}

ll mpow(ll a, ll n, ll mo = mod){ // a^n % mod
    ll re=1;
    while (n>0){
        if (n&1) re = re*a %mo;
        a = a*a %mo;
        n>>=1;
    }
    return re;
}

ll inv (ll b, ll mo = mod){
    if (b==1) return b;
    return (mo-mo/b) * inv(mo%b,mo) % mo;
}

const int maxn = 5e3+5;

bool win[maxn];
int safe[maxn]; // safe edges coming out of this node
vector<int> g[maxn];
vector<int> rg[maxn];


std::vector<int> who_wins(std::vector<int> who, std::vector<int> station, std::vector<int> UU, std::vector<int> VV) {
	int n = SZ(who);
	std::vector<int> res(n);
    REP(i,SZ(UU)) {
        g[UU[i]].pb(VV[i]);
        rg[VV[i]].pb(UU[i]);
    }
//    return res;
    REP(round, 15)
    REP(T, n) {
        if (res[T]) continue;
        // T is target node
        if (!station[T]) continue;
        // who = 1: any is required to win
        REP(i,n) safe[i] = SZ(g[i]);
        memset(win, 0, sizeof win);
        win[T] = 1;
        queue<int> q;
        REP(i,n) if (res[i] || i==T) q.push(i), win[i] = 1;
        while (!q.empty() ){
            int v = q.front(); q.pop();
            for (int u : rg[v]) {
                if (!win[u]) {
                    if (who[u] == 1) {
                        // any required
                        bug(u, who[u]);
                        win[u] = 1; q.push(u);
                    }else{
                        -- safe[u];
                        if (safe[u] == 0) {
                            q.push(u);
                            win[u] = 1;
                        }
                    }
                }
            }
        }
//        continue;
        bool ok = 0;
        if (who[T] == 1) {
            // any required
            for (int u : g[T]) {
                if (win[u]) {
                    ok = 1; break;
                }
            }
        }else{
            ok = 1;
            for (int u : g[T]) {
                if (!win[u]) {
//                    bug(T, u, win[u]);
                    ok=0; break;
                }
            }
        }
//        bug(T, ok);
        if (ok) {
            REP(i,n) {
//                bug(i, win[i]);
                if (win[i]) res[i] = 1;
            }
        }
    }
	return res;
}



/*
2 4
0 1
1 0
0 0
0 1
1 0
1 1

*/


# Verdict Execution time Memory Grader output
1 Correct 977 ms 1048 KB Output is correct
2 Correct 1054 ms 1100 KB Output is correct
3 Correct 1006 ms 1140 KB Output is correct
4 Correct 1052 ms 1148 KB Output is correct
5 Correct 978 ms 1152 KB Output is correct
6 Correct 939 ms 1152 KB Output is correct
7 Correct 1070 ms 1132 KB Output is correct
8 Correct 368 ms 1148 KB Output is correct
9 Correct 865 ms 1152 KB Output is correct
10 Correct 595 ms 1104 KB Output is correct
11 Correct 123 ms 1092 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 460 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 854 ms 1420 KB Output is correct
2 Correct 1355 ms 1404 KB Output is correct
3 Correct 1681 ms 1392 KB Output is correct
4 Correct 11 ms 1368 KB Output is correct
5 Correct 331 ms 1376 KB Output is correct
6 Correct 265 ms 1364 KB Output is correct
7 Correct 11 ms 1356 KB Output is correct
8 Correct 9 ms 1356 KB Output is correct
9 Correct 11 ms 1356 KB Output is correct
10 Correct 10 ms 1356 KB Output is correct
11 Correct 11 ms 1228 KB Output is correct
12 Correct 8 ms 1212 KB Output is correct
13 Correct 9 ms 1356 KB Output is correct
14 Correct 13 ms 1392 KB Output is correct
15 Correct 10 ms 1356 KB Output is correct
16 Correct 11 ms 1356 KB Output is correct
17 Correct 10 ms 1372 KB Output is correct
18 Execution timed out 2085 ms 1100 KB Time limit exceeded
# Verdict Execution time Memory Grader output
1 Incorrect 1455 ms 1100 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 10 ms 1356 KB Output is correct
2 Correct 12 ms 1396 KB Output is correct
3 Correct 11 ms 1356 KB Output is correct
4 Correct 9 ms 1216 KB Output is correct
5 Correct 2 ms 588 KB Output is correct
6 Correct 6 ms 972 KB Output is correct
7 Correct 7 ms 1100 KB Output is correct
8 Correct 7 ms 1072 KB Output is correct
9 Correct 6 ms 1100 KB Output is correct
10 Correct 3 ms 716 KB Output is correct
11 Correct 6 ms 1056 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 977 ms 1048 KB Output is correct
2 Correct 1054 ms 1100 KB Output is correct
3 Correct 1006 ms 1140 KB Output is correct
4 Correct 1052 ms 1148 KB Output is correct
5 Correct 978 ms 1152 KB Output is correct
6 Correct 939 ms 1152 KB Output is correct
7 Correct 1070 ms 1132 KB Output is correct
8 Correct 368 ms 1148 KB Output is correct
9 Correct 865 ms 1152 KB Output is correct
10 Correct 595 ms 1104 KB Output is correct
11 Correct 123 ms 1092 KB Output is correct
12 Incorrect 1 ms 460 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
13 Halted 0 ms 0 KB -