답안 #660971

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
660971 2022-11-23T18:43:57 Z urosk 장난감 기차 (IOI17_train) C++14
22 / 100
1648 ms 1592 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;
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];
    }
}
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);
    m = sz(u)-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);
    }
    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;
    }
	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 3 ms 724 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 0 ms 340 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 289 ms 1360 KB Output is correct
2 Correct 275 ms 1528 KB Output is correct
3 Correct 262 ms 1492 KB Output is correct
4 Correct 1139 ms 1444 KB Output is correct
5 Correct 950 ms 1388 KB Output is correct
6 Correct 856 ms 1300 KB Output is correct
7 Correct 702 ms 1356 KB Output is correct
8 Correct 449 ms 1284 KB Output is correct
9 Correct 416 ms 1236 KB Output is correct
10 Correct 550 ms 1328 KB Output is correct
11 Correct 467 ms 1212 KB Output is correct
12 Correct 38 ms 1204 KB Output is correct
13 Correct 1546 ms 1472 KB Output is correct
14 Correct 1648 ms 1592 KB Output is correct
15 Correct 1646 ms 1468 KB Output is correct
16 Correct 1127 ms 1464 KB Output is correct
17 Correct 1198 ms 1460 KB Output is correct
18 Correct 495 ms 1232 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 641 ms 1064 KB Output is correct
2 Correct 193 ms 980 KB Output is correct
3 Correct 374 ms 1188 KB Output is correct
4 Correct 378 ms 1100 KB Output is correct
5 Correct 527 ms 1072 KB Output is correct
6 Correct 445 ms 1076 KB Output is correct
7 Correct 472 ms 1040 KB Output is correct
8 Correct 332 ms 1024 KB Output is correct
9 Correct 23 ms 980 KB Output is correct
10 Correct 858 ms 1260 KB Output is correct
11 Correct 850 ms 1272 KB Output is correct
12 Correct 817 ms 1256 KB Output is correct
13 Correct 648 ms 1136 KB Output is correct
14 Correct 395 ms 1032 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 1012 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 724 KB WA in grader: Wrong returned array size
2 Halted 0 ms 0 KB -