QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#78524#5511. Minor Evilyuto1115AC ✓6104ms59112kbC++178.1kb2023-02-19 11:34:132023-02-19 11:34:24

Judging History

你现在查看的是最新测评结果

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-02-19 11:34:24]
  • 评测
  • 测评结果:AC
  • 用时:6104ms
  • 内存:59112kb
  • [2023-02-19 11:34:13]
  • 提交

answer

#include<bits/stdc++.h>
#include<ext/pb_ds/assoc_container.hpp>
#include<ext/pb_ds/tree_policy.hpp>
#include<ext/pb_ds/tag_and_trait.hpp>
#define overload4(_1, _2, _3, _4, name, ...) name
#define rep1(i, n) for (ll i = 0; i < ll(n); ++i)
#define rep2(i, s, n) for (ll i = ll(s); i < ll(n); ++i)
#define rep3(i, s, n, d) for(ll i = ll(s); i < ll(n); i+=d)
#define rep(...) overload4(__VA_ARGS__,rep3,rep2,rep1)(__VA_ARGS__)
#define rrep1(i, n) for (ll i = ll(n)-1; i >= 0; i--)
#define rrep2(i, n, t) for (ll i = ll(n)-1; i >= (ll)t; i--)
#define rrep3(i, n, t, d) for (ll i = ll(n)-1; i >= (ll)t; i-=d)
#define rrep(...) overload4(__VA_ARGS__,rrep3,rrep2,rrep1)(__VA_ARGS__)
#define all(a) a.begin(),a.end()
#define rall(a) a.rbegin(),a.rend()
#define SUM(a) accumulate(all(a),0LL)
#define MIN(a) *min_element(all(a))
#define MAX(a) *max_element(all(a))
#define SORT(a) sort(all(a));
#define REV(a) reverse(all(a));
#define SZ(a) int(a.size())
#define popcount(x) __builtin_popcountll(x)
#define pf push_front
#define pb push_back
#define ef emplace_front
#define eb emplace_back
#define ppf pop_front
#define ppb pop_back
#ifdef __LOCAL
#define debug(...) { cout << #__VA_ARGS__; cout << ": "; print(__VA_ARGS__); cout << flush; }
#else
#define debug(...) void(0);
#endif
#define INT(...) int __VA_ARGS__;scan(__VA_ARGS__)
#define LL(...) ll __VA_ARGS__;scan(__VA_ARGS__)
#define STR(...) string __VA_ARGS__;scan(__VA_ARGS__)
#define CHR(...) char __VA_ARGS__;scan(__VA_ARGS__)
#define DBL(...) double __VA_ARGS__;scan(__VA_ARGS__)
#define LD(...) ld __VA_ARGS__;scan(__VA_ARGS__)
using namespace std;
using namespace __gnu_pbds;
using ll = long long;
using ld = long double;
using P = pair<int, int>;
using LP = pair<ll, ll>;
using vi = vector<int>;
using vvi = vector<vi>;
using vvvi = vector<vvi>;
using vl = vector<ll>;
using vvl = vector<vl>;
using vvvl = vector<vvl>;
using vd = vector<double>;
using vvd = vector<vd>;
using vs = vector<string>;
using vc = vector<char>;
using vvc = vector<vc>;
using vb = vector<bool>;
using vvb = vector<vb>;
using vp = vector<P>;
using vvp = vector<vp>;
using vlp = vector<LP>;
using vvlp = vector<vlp>;
template<class T>
using PQ = priority_queue<T>;
template<class T>
using PQrev = priority_queue <T, vector<T>, greater<T>>;

template<class S, class T>
istream &operator>>(istream & is, pair < S, T > &p) { return is >> p.first >> p.second; }

template<class S, class T>
ostream &operator<<(ostream &os, const pair <S, T> &p) { return os << '{' << p.first << ", " << p.second << '}'; }

template<class S, class T, class U>
istream &operator>>(istream & is, tuple < S, T, U > &t) { return is >> get<0>(t) >> get<1>(t) >> get<2>(t); }

template<class S, class T, class U>
ostream &operator<<(ostream &os, const tuple<S, T, U> &t) {
    return os << '{' << get<0>(t) << ", " << get<1>(t) << ", " << get<2>(t) << '}';
}

template<class T>
istream &operator>>(istream & is, vector < T > &v) {
    for (T &t: v) { is >> t; }
    return is;
}

template<class T>
ostream &operator<<(ostream &os, const vector <T> &v) {
    os << '[';
    rep(i, v.size()) os << v[i] << (i == int(v.size() - 1) ? "" : ", ");
    return os << ']';
}

template<class T>
ostream &operator<<(ostream &os, const deque <T> &v) {
    os << '[';
    rep(i, v.size()) os << v[i] << (i == int(v.size() - 1) ? "" : ", ");
    return os << ']';
}

template<class T>
ostream &operator<<(ostream &os, const set <T> &st) {
    os << '{';
    auto it = st.begin();
    while (it != st.end()) {
        os << (it == st.begin() ? "" : ", ") << *it;
        it++;
    }
    return os << '}';
}

template<class T>
ostream &operator<<(ostream &os, const multiset <T> &st) {
    os << '{';
    auto it = st.begin();
    while (it != st.end()) {
        os << (it == st.begin() ? "" : ", ") << *it;
        it++;
    }
    return os << '}';
}

template<class T, class U>
ostream &operator<<(ostream &os, const map <T, U> &mp) {
    os << '{';
    auto it = mp.begin();
    while (it != mp.end()) {
        os << (it == mp.begin() ? "" : ", ") << *it;
        it++;
    }
    return os << '}';
}

template<class T>
void vecout(const vector <T> &v, char div = '\n') {
    rep(i, v.size()) cout << v[i] << (i == int(v.size() - 1) ? '\n' : div);
}

template<class T>
bool constexpr chmin(T &a, T b) {
    if (a > b) {
        a = b;
        return true;
    }
    return false;
}

template<class T>
bool constexpr chmax(T &a, T b) {
    if (a < b) {
        a = b;
        return true;
    }
    return false;
}

void scan() {}

template<class Head, class... Tail>
void scan(Head &head, Tail &... tail) {
    cin >> head;
    scan(tail...);
}

template<class T>
void print(const T &t) { cout << t << '\n'; }

template<class Head, class... Tail>
void print(const Head &head, const Tail &... tail) {
    cout << head << ' ';
    print(tail...);
}

template<class T>
vector <T> &operator+=(vector <T> &v, T x) {
    for (T &t: v) t += x;
    return v;
}

template<class T>
vector <T> &operator-=(vector <T> &v, T x) {
    for (T &t: v) t -= x;
    return v;
}

template<class T>
vector <T> &operator*=(vector <T> &v, T x) {
    for (T &t: v) t *= x;
    return v;
}

template<class T>
vector <T> &operator/=(vector <T> &v, T x) {
    for (T &t: v) t /= x;
    return v;
}

struct Init_io {
    Init_io() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
        cout << boolalpha << fixed << setprecision(15);
        cerr << boolalpha << fixed << setprecision(15);
    }
} init_io;

const string yes[] = {"no", "yes"};
const string Yes[] = {"No", "Yes"};
const string YES[] = {"NO", "YES"};
const int inf = 1001001001;
const ll linf = 1001001001001001001;

void rearrange(const vi &) {}

template<class T, class... Tail>
void rearrange(const vi &ord, vector <T> &head, Tail &...tail) {
    assert(ord.size() == head.size());
    vector <T> ori = head;
    rep(i, ord.size()) head[i] = ori[ord[i]];
    rearrange(ord, tail...);
}

template<class T, class... Tail>
void sort_by(vector <T> &head, Tail &... tail) {
    vi ord(head.size());
    iota(all(ord), 0);
    sort(all(ord), [&](int i, int j) { return head[i] < head[j]; });
    rearrange(ord, head, tail...);
}

bool in_rect(int i, int j, int h, int w) {
    return 0 <= i and i < h and 0 <= j and j < w;
}

template<class T>
constexpr vector <T> pow_table(int n, T base) {
    vector <T> res(n, 1);
    rep(i, n - 1) res[i + 1] = res[i] * base;
    return res;
}

template<class T, class S>
vector <T> cumsum(const vector <S> &v, bool shift_one = true) {
    int n = v.size();
    vector <T> res;
    if (shift_one) {
        res.resize(n + 1);
        rep(i, n) res[i + 1] = res[i] + v[i];
    } else {
        res.resize(n);
        if (n) {
            res[0] = v[0];
            rep(i, 1, n) res[i] = res[i - 1] + v[i];
        }
    }
    return res;
}

vvi graph(int n, int m, bool directed = false, int origin = 1) {
    vvi G(n);
    rep(_, m) {
        INT(u, v);
        u -= origin, v -= origin;
        G[u].pb(v);
        if (!directed) G[v].pb(u);
    }
    return G;
}

template<class T>
vector <vector<pair < int, T>>>

weighted_graph(int n, int m, bool directed = false, int origin = 1) {
    vector < vector < pair < int, T>>> G(n);
    rep(_, m) {
        int u, v;
        T w;
        scan(u, v, w);
        u -= origin, v -= origin;
        G[u].eb(v, w);
        if (!directed) G[v].eb(u, w);
    }
    return G;
}

void solve() {
    INT(n, k);
    vi a(k), b(k);
    rep(i, k) scan(a[i], b[i]);
    INT(s);
    set<int> st;
    rep(i, 1, n + 1) st.insert(i);
    rep(i, s) {
        INT(now);
        st.erase(now);
    }
    string ans(k, 'N');
    rrep(i, k) {
        if (st.count(a[i]) and !st.count(b[i])) {
            ans[i] = 'T';
            st.insert(b[i]);
        }
    }
    if (SZ(st) == n) {
        print("TAK");
        print(ans);
    } else {
        print("NIE");
    }
}

int main() {
    int t;
    cin >> t;
    rep(i, t) solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3516kb

input:

2
5 6
1 2
2 1
2 5
2 3
2 4
4 2
3
1 2 3
3 2
1 2
2 3
2
2 3

output:

TAK
NTNTNT
NIE

result:

ok correct (2 test cases)

Test #2:

score: 0
Accepted
time: 1526ms
memory: 4524kb

input:

1000
5 6
1 2
2 1
2 5
2 3
2 4
4 2
3
1 2 3
3 2
1 2
2 3
2
2 3
2 1
1 2
1
1
2 1
1 2
1
2
3 3
2 1
3 2
3 2
1
3
3 3
1 3
1 3
1 2
2
1 3
3 3
1 2
1 3
1 3
1
2
3 3
2 1
2 3
1 3
1
2
3 3
3 2
3 1
1 2
3
1 2 3
3 3
1 2
2 3
1 2
1
3
3 3
2 1
1 2
1 2
1
2
3 3
2 1
1 3
1 3
1
1
3 3
3 2
3 2
2 3
1
3
3 3
3 2
1 2
2 1
1
1
3 3
2 1
3 2...

output:

TAK
NTNTNT
NIE
NIE
TAK
T
NIE
NIE
TAK
TNN
NIE
NIE
TAK
NTN
TAK
NNT
TAK
TNN
TAK
NNT
TAK
NNT
TAK
NNT
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NTNN
TAK
TNTN
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
TNTN
TAK
NNTN
TAK
NNNT
TAK
NNTN
NIE
TAK
NNTN
NIE
NIE
TAK
NNNT
NIE
TAK
NNTN
NIE
NIE
NIE
NIE
NIE
NIE
NIE
NIE
TAK
NNT
NI...

result:

ok correct (1000 test cases)

Test #3:

score: 0
Accepted
time: 4351ms
memory: 58912kb

input:

13
1000000 1000000
486802 809159
104883 440551
501905 622668
279504 663293
839882 889531
125252 955226
270422 92128
363725 456993
513782 686348
292006 59538
112416 619373
150140 212648
891080 338487
348780 833779
186126 366730
294350 778236
173878 385135
831186 985800
868035 100117
752578 739541
457...

output:

NIE
NIE
NIE
TAK
NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN...

result:

ok correct (13 test cases)

Test #4:

score: 0
Accepted
time: 1880ms
memory: 59108kb

input:

4
1000000 1000000
883198 803418
803418 883198
883198 803418
803418 883198
883198 803418
803418 883198
803418 883198
883198 803418
883198 803418
883198 803418
883198 803418
883198 803418
803418 883198
883198 803418
803418 883198
803418 883198
883198 803418
883198 803418
883198 803418
803418 883198
88...

output:

NIE
NIE
NIE
NIE

result:

ok correct (4 test cases)

Test #5:

score: 0
Accepted
time: 6104ms
memory: 59112kb

input:

4
1000000 1000000
820179 264070
64152 264070
264070 865675
614523 264070
264070 701152
609404 264070
793293 264070
264070 809556
467741 643260
337227 264070
264070 445071
248826 822649
856028 128336
367537 264070
81341 264070
476352 687682
306818 264070
123295 410991
255671 264070
61947 264070
24372...

output:

TAK
NNNNTNNNNNTNNNNNNNNNNNTNTNNTNNNTNNTNNNTNTTTNNNNNTNNNNNNTNTTNNNTNNNTTTNTNNNNNTNNNNNTNTTNNTNNNTTTTNTNNNTNNTTTTNNTNTNNNNTTNTNTTTTNNNNNNNTNTNNNNTNNNNTTTNNNNNNTNTNNNNNTTNTTNNTNNNNTNTNTNNTTTNNTNNTNTNNTTNTNNNNNNNTNNNNTTNNNNNNNNNTNNTNNNTTNNTTNNTNNTNNNNTNNNTNTNNTTNNNNNTNNNNNNNTNTNNNTNTNNNNNNNTNNNNNTNTNNT...

result:

ok correct (4 test cases)

Test #6:

score: 0
Accepted
time: 4218ms
memory: 59080kb

input:

4
1000000 1000000
744622 299781
744622 837726
883242 744622
672533 744622
744622 685446
942503 744622
677083 744622
744622 624546
744622 586007
193995 744622
744622 276667
744622 733596
744622 458621
744622 685762
232706 744622
744622 460264
744622 683335
744622 708865
744622 893299
744622 254173
31...

output:

TAK
TTNNTNNTTNTTTTNTTTTTNTTTTTNTTTNTNTTTTNTTTTTTTTTNNTTTTNTNNTTTTTTTTTTTNTTTTTTTTTTTNTNTTTNTTTTTTTTTTTTTTNNTNTNTTNTTTTTTNTTTTNTNTTNTTTTTTTTTTTTTNTTTTTTTNTTTTTTNTTNTTTNTTTTTTTTTNNTTTTTTTNTTTNTTTTTTTTNNNNTTTTTTTTTTTTTNNTTTTTTTTTNTTTNNTTNNTTTTTTTTTTTTTNTTTTTTTTTNTTTTTNTTTTTTTNNTTTTTTTTTTTTTNTTTTTTTNTNT...

result:

ok correct (4 test cases)