답안 #660994

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
660994 2022-11-23T19:10:16 Z urosk 장난감 기차 (IOI17_train) C++14
22 / 100
1641 ms 1420 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) return 1;
        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);
    }
    return 1;
}
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
*/
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB 3rd lines differ - on the 4997th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 263 ms 1420 KB Output is correct
2 Correct 266 ms 1364 KB Output is correct
3 Correct 256 ms 1340 KB Output is correct
4 Correct 1167 ms 1396 KB Output is correct
5 Correct 987 ms 1236 KB Output is correct
6 Correct 850 ms 1136 KB Output is correct
7 Correct 687 ms 1108 KB Output is correct
8 Correct 439 ms 1120 KB Output is correct
9 Correct 404 ms 1128 KB Output is correct
10 Correct 571 ms 1076 KB Output is correct
11 Correct 470 ms 1072 KB Output is correct
12 Correct 41 ms 1100 KB Output is correct
13 Correct 1512 ms 1308 KB Output is correct
14 Correct 1641 ms 1296 KB Output is correct
15 Correct 1618 ms 1304 KB Output is correct
16 Correct 1130 ms 1356 KB Output is correct
17 Correct 1195 ms 1296 KB Output is correct
18 Correct 509 ms 1232 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 637 ms 1120 KB Output is correct
2 Correct 194 ms 980 KB Output is correct
3 Correct 364 ms 1112 KB Output is correct
4 Correct 373 ms 1096 KB Output is correct
5 Correct 523 ms 1232 KB Output is correct
6 Correct 441 ms 1224 KB Output is correct
7 Correct 462 ms 1116 KB Output is correct
8 Correct 322 ms 1068 KB Output is correct
9 Correct 23 ms 1052 KB Output is correct
10 Correct 824 ms 1356 KB Output is correct
11 Correct 827 ms 1356 KB Output is correct
12 Correct 822 ms 1300 KB Output is correct
13 Correct 632 ms 1228 KB Output is correct
14 Correct 392 ms 1080 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 9 ms 1108 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB 3rd lines differ - on the 4997th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -