답안 #233369

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
233369 2020-05-20T10:41:20 Z ne4eHbKa Tenis (COI19_tenis) C++17
51 / 100
500 ms 5240 KB
//{ <defines>
#include <bits/stdc++.h>
using namespace std;

//#pragma comment(linker, "/stack:200000000")
//#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math,-O3")

#define fr(i, n) for(int i = 0; i < n; ++i)
#define fo(n) fr(i, n)

#define re return
#define ef else if
#define ifn(x) if(!(x))
#define _  << ' ' <<

#define ft first
#define sd second
#define ve vector
#define pb push_back
#define eb emplace_back

#define sz(x) int((x).size())
#define ip2(x) (1 << (x))
#define lp2(x) (1ll << (x))
#define bnd(x) x.begin(), x.end()
#define clr(x, y) memset((x), (y), sizeof (x))

typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef ve<int> vi;

inline ll time() {re chrono :: system_clock().now().time_since_epoch().count();}
mt19937 rnd(time());
mt19937_64 RND(time());

template<typename t> inline void umin(t &a, t b) {a = min(a, b);}
template<typename t> inline void umax(t &a, t b) {a = max(a, b);}

int md = 1e9 + 7;

inline int m_add(int&a, int b) {a += b; if(a < 0) a += md; if(a >= md) a -= md; re a;}
inline int m_sum(int a, int b) {a += b; if(a < 0) a += md; if(a >= md) a -= md; re a;}
inline int m_mul(int&a, int b) {re a = 1ll * a * b % md;}
inline int m_prod(int a, int b) {re 1ll * a * b % md;}
inline int m_doub(int a) {a <<= 1; if(a >= md) a -= md; re a;}

int m_bpow(ll A, ll b) {
    int a = A % md;
    ll ans = 1;
    for(ll p = lp2(63 - __builtin_clzll(b)); p; p >>= 1) {
        (ans *= ans) %= md;
        if(p & b)
            (ans *= a) %= md;
    }
    re ans;
}

//const ld pi = arg(complex<ld>(-1, 0));
//const ld pi2 = pi + pi;
const int oo = 2e9;
const ll OO = 4e18;
//} </defines>
const int N = 1e5 + 5;

int n, q;
int p[3][N], ps[3][N];
bool win[N];
bool ready;

void count() {
    ready = true;
    memset(win, 0, n);
    queue<int> q;
    fo(3) q.push(p[i][0]);
    vi first(3, 0);
    for(; !q.empty(); q.pop()) {
        int v = q.front();
        if(win[v]) continue;
        win[v] = true;
        fo(3) {
            for(int j = first[i]; j < ps[i][v]; ++j) q.push(p[i][j]);
            first[i] = ps[i][v] + 1;
        }
    }
}

void solve() {
    cin >> n >> q;
    fr(j, 3) fo(n) cin >> p[j][i], ps[j][--p[j][i]] = i;
    ready = false;
    fo(q) {
        char tp; cin >> tp;
        if(tp == '1') {
            if(!ready) count();
            int x; cin >> x;
            cout << (win[x - 1] ? "DA\n" : "NE\n");
        } else {
            ready = false;
            int f, a, b;
            cin >> f >> a >> b;
            --f, --a, --b;
            swap(p[f][ps[f][a]], p[f][ps[f][b]]);
            swap(ps[f][a], ps[f][b]);
        }
    }
}

int main() {
#ifdef _LOCAL
    freopen("in.txt", "r", stdin);
    int tests; cin >> tests;
    for(int test = 1; test <= tests; ++test) {
        cerr << test << " {\n";
        solve();
        cerr << "}\n\n";
    }
#else
    //freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout);
    ios_base :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
    solve();
#endif
    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 57 ms 4216 KB Output is correct
14 Correct 81 ms 4344 KB Output is correct
15 Correct 39 ms 4216 KB Output is correct
16 Correct 37 ms 4216 KB Output is correct
17 Correct 39 ms 4204 KB Output is correct
18 Correct 38 ms 4224 KB Output is correct
19 Correct 38 ms 4216 KB Output is correct
20 Correct 37 ms 4088 KB Output is correct
21 Correct 37 ms 4216 KB Output is correct
22 Correct 36 ms 4216 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 58 ms 5240 KB Output is correct
2 Correct 54 ms 4472 KB Output is correct
3 Correct 53 ms 4600 KB Output is correct
4 Correct 55 ms 4472 KB Output is correct
5 Correct 54 ms 4472 KB Output is correct
6 Correct 55 ms 4472 KB Output is correct
7 Correct 55 ms 4472 KB Output is correct
8 Correct 55 ms 4472 KB Output is correct
9 Correct 53 ms 4472 KB Output is correct
10 Correct 52 ms 4472 KB Output is correct
11 Correct 57 ms 4472 KB Output is correct
12 Correct 55 ms 4600 KB Output is correct
13 Correct 53 ms 4472 KB Output is correct
14 Correct 53 ms 4600 KB Output is correct
15 Correct 51 ms 4600 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 5 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct
11 Correct 5 ms 384 KB Output is correct
12 Correct 5 ms 384 KB Output is correct
13 Correct 57 ms 4216 KB Output is correct
14 Correct 81 ms 4344 KB Output is correct
15 Correct 39 ms 4216 KB Output is correct
16 Correct 37 ms 4216 KB Output is correct
17 Correct 39 ms 4204 KB Output is correct
18 Correct 38 ms 4224 KB Output is correct
19 Correct 38 ms 4216 KB Output is correct
20 Correct 37 ms 4088 KB Output is correct
21 Correct 37 ms 4216 KB Output is correct
22 Correct 36 ms 4216 KB Output is correct
23 Correct 58 ms 5240 KB Output is correct
24 Correct 54 ms 4472 KB Output is correct
25 Correct 53 ms 4600 KB Output is correct
26 Correct 55 ms 4472 KB Output is correct
27 Correct 54 ms 4472 KB Output is correct
28 Correct 55 ms 4472 KB Output is correct
29 Correct 55 ms 4472 KB Output is correct
30 Correct 55 ms 4472 KB Output is correct
31 Correct 53 ms 4472 KB Output is correct
32 Correct 52 ms 4472 KB Output is correct
33 Correct 57 ms 4472 KB Output is correct
34 Correct 55 ms 4600 KB Output is correct
35 Correct 53 ms 4472 KB Output is correct
36 Correct 53 ms 4600 KB Output is correct
37 Correct 51 ms 4600 KB Output is correct
38 Execution timed out 1094 ms 4344 KB Time limit exceeded
39 Halted 0 ms 0 KB -