QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#727959#9573. Social Mediaucup-team5243#AC ✓597ms34656kbC++2312.4kb2024-11-09 14:15:462024-11-09 14:15:46

Judging History

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

  • [2024-11-09 14:15:46]
  • 评测
  • 测评结果:AC
  • 用时:597ms
  • 内存:34656kb
  • [2024-11-09 14:15:46]
  • 提交

answer

//line 1 "answer.cpp"
#if !__INCLUDE_LEVEL__
#include __FILE__
int solve() {
    ll n,m,k; input(n, m, k);
    vl fi(n); input(fi); --fi;
    set<ll> st(all(fi));
    vl f;
    rep(i, k) if (!st.count(i)) f.emplace_back(i);
    sort(all(f));
    vector<pll> edges(m);
    rep(i, m) {
        ll a,b; input(a, b); --a; --b;
        if (a > b) swap(a, b);
        edges[i] = {a, b};
    }
    if (n + 2 >= k) {
        print(m);
        return 0;
    }
    ll ans = 0;
    vl cnt(sz(f), 0);
    map<pll, ll> cnt2;
    for(auto [u, v] : edges) {
        if (st.count(u) && st.count(v)) {
            ans++;
        } else if (st.count(u) && !st.count(v)) {
            ll p = lower_bound(all(f), v) - f.begin();
            cnt[p]++;
        } else if (st.count(v) && !st.count(u)) {
            ll p = lower_bound(all(f), u) - f.begin();
            cnt[p]++;
        }
        if (!st.count(u) && !st.count(v)) {
            cnt2[{u, v}]++;
        }
    }
    debug(f);
    debug(cnt);
    ll mx = -INFL, mx2 = -INFL;
    rep(i, sz(cnt)) {
        ll u = f[i];
        debug(cnt[i] + cnt2[{u, u}]);
        if (cnt[i] + cnt2[{u, u}] >= mx) {
            mx2 = mx;
            mx = cnt[i] + cnt2[{u, u}];
        } else if (cnt[i] + cnt2[{u, u}] >= mx2) {mx2 = cnt[i] + cnt2[{u, u}];}
    }
    ll add = ans;
    ans += mx + mx2;
    debug(cnt, mx, mx2);
    debug(cnt2);
    debug(add, ans);
    for(auto [u, v] : edges) {
        if (st.count(u) || st.count(v)) continue;
        ll pu = lower_bound(all(f), u) - f.begin();
        ll pv = lower_bound(all(f), v) - f.begin();
        if (u != v) {
            debug(u, v, add, cnt2[{u, u}], cnt2[{v, v}], cnt2[{u, v}], cnt[pu], cnt[pv]);
            chmax(ans, add + cnt2[{u, u}] + cnt2[{v, v}] + cnt2[{u, v}] + cnt[pu] + cnt[pv]);
        } else{
            debug(u, v, add, cnt2[{u, u}], cnt[pu]);
            chmax(ans, add + cnt2[{u, u}] + cnt[pu]);
        }
    }
    print(ans);
    return 0;
}
int main() {
    ll t; input(t);
    rep(t) solve();
}
#else
//line 2 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/std.hpp"
#include <bits/stdc++.h>
#ifndef LOCAL_TEST
#pragma GCC target ("avx")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
#endif // LOCAL_TEST
using namespace std;
using std::cout;
// shorten typenames
using ll = long long;
using pii = pair<int, int>; using pll = 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 vb = vector<bool>; using vvb = vector<vb>; using vvvb = vector<vvb>;
using vc = vector<char>; using vvc = vector<vc>; using vvvc = vector<vvc>;
using vd = vector<double>; using vvd = vector<vd>; using vvvd = vector<vvd>;
using vs = vector<string>; using vvs = vector<vector<string>>; using vvvs = vector<vector<vector<string>>>;
template<typename T> vector<vector<T>> vv(int h, int w, T val = T()) { return vector(h, vector<T>(w, val)); }
template<typename T> vector<vector<vector<T>>> vvv(int h1, int h2, int h3, T val = T()) { return vector(h1, vector(h2, vector<T>(h3, val))); }
template<typename T> vector<vector<vector<vector<T>>>> vvvv(int h1, int h2, int h3, int h4, T val = T()) { return vector(h1, vector(h2, vector(h3, vector<T>(h4, val)))); }
template <class T> using priority_queue_min = priority_queue<T, vector<T>, greater<T>>;
// define CONSTANTS
constexpr double PI = 3.14159265358979323;
constexpr int INF = 100100111; constexpr ll INFL = 3300300300300300491LL;
float EPS = 1e-8; double EPSL = 1e-10;
template<typename T> bool eq(const T x, const T y) { return x == y; }
template<> bool eq<double>(const double x, const double y) { return (abs(x - y) < EPSL * x || abs(x - y) < EPSL); }
template<> bool eq<float>(const float x, const float y) { return abs(x - y) < EPS * x; }
template<typename T> bool neq(const T x, const T y) { return !(eq<T>(x, y)); }
template<typename T> bool ge(const T x, const T y) { return (eq<T>(x, y) || (x > y)); }
template<typename T> bool le(const T x, const T y) { return (eq<T>(x, y) || (x < y)); }
template<typename T> bool gt(const T x, const T y) { return !(le<T>(x, y)); }
template<typename T> bool lt(const T x, const T y) { return !(ge<T>(x, y)); }
constexpr int MODINT998244353 = 998244353;
constexpr int MODINT1000000007 = 1000000007;
// fasten io
struct Nyan { Nyan() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } nyan;
// define macros
#define all(a) (a).begin(), (a).end()
#define sz(x) ((ll)(x).size())
#define rep1(n) for(ll dummy_iter = 0LL; dummy_iter < n; ++dummy_iter) // 0,1,...,n-1
#define rep2(i, n) for(ll i = 0LL, i##_counter = 0LL; i##_counter < ll(n); ++(i##_counter), (i) = i##_counter) // i=0,1,...,n-1
#define rep3(i, s, t) for(ll i = ll(s), i##_counter = ll(s); i##_counter < ll(t); ++(i##_counter), (i) = (i##_counter)) // i=s,s+1,...,t-1
#define rep4(i, s, t, step) for(ll i##_counter = step > 0 ? ll(s) : -ll(s), i##_end = step > 0 ? ll(t) : -ll(t), i##_step = abs(step), i = ll(s); i##_counter < i##_end; i##_counter += i##_step, i = step > 0 ? i##_counter : -i##_counter) // i=s,s+step,...,<t
#define overload4(a, b, c, d, e, ...) e
#define rep(...) overload4(__VA_ARGS__, rep4, rep3, rep2, rep1)(__VA_ARGS__)
#define repe(a, v) for(auto& a : (v)) // iterate over all elements in v
#define smod(n, m) ((((n) % (m)) + (m)) % (m))
#define sdiv(n, m) (((n) - smod(n, m)) / (m))
#define uniq(a) {sort(all(a)); (a).erase(unique(all(a)), (a).end());}
int Yes(bool b=true) { cout << (b ? "Yes\n" : "No\n"); return 0; };
int YES(bool b=true) { cout << (b ? "YES\n" : "NO\n"); return 0; };
int No(bool b=true) {return Yes(!b);};
int NO(bool b=true) {return YES(!b);};
template<typename T, size_t N> T max(array<T, N>& a) { return *max_element(all(a)); };
template<typename T, size_t N> T min(array<T, N>& a) { return *min_element(all(a)); };
template<typename T> T max(vector<T>& a) { return *max_element(all(a)); };
template<typename T> T min(vector<T>& a) { return *min_element(all(a)); };
template<typename T> vector<T> vec_slice(const vector<T>& a, int l, int r) { vector<T> rev; rep(i, l, r) rev.push_back(a[i]); return rev; };
template<typename T> T sum(vector<T>& a, T zero = T(0)) { T rev = zero; rep(i, sz(a)) rev += a[i]; return rev; };
template<typename T> bool in_range(const T& val, const T& s, const T& t) { return s <= val && val < t; };

template <class T> inline vector<T>& operator--(vector<T>& v) { repe(x, v) --x; return v; }
template <class T> inline vector<T>& operator++(vector<T>& v) { repe(x, v) ++x; return v; }

ll powm(ll a, ll n, ll mod=INFL) {
    ll res = 1;
    while (n > 0) {
        if (n & 1) res = (res * a) % mod;
        if (n > 1) a = (a * a) % mod;
        n >>= 1;
    }
    return res;
}
ll sqrtll(ll x) {
    assert(x >= 0);
    ll rev = sqrt(x);
    while(rev * rev > x) --rev;
    while((rev+1) * (rev+1)<=x) ++rev;
    return rev;
}
template <class T> inline bool chmax(T& M, const T& x) { if (M < x) { M = x; return true; } return false; }
template <class T> inline bool chmin(T& m, const T& x) { if (m > x) { m = x; return true; } return false; }
int digit(ll x, int d=10) { int rev=0; while (x > 0) { rev++; x /= d;}; return rev; }
/**
 * @brief std.hpp
 * @docs docs/std/std.md
 */
//line 3 "/home/seekworser/.cpp_lib/competitive_library/competitive/std/io.hpp"
// overload operators (prototypes)
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p);
template <class T> inline istream& operator>>(istream& is, vector<T>& v);
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p);
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v);
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp);
template <typename T> ostream &operator<<(ostream &os, const set<T> &st);
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st);
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st);
template <typename T> ostream &operator<<(ostream &os, queue<T> q);
template <typename T> ostream &operator<<(ostream &os, deque<T> q);
template <typename T> ostream &operator<<(ostream &os, stack<T> st);
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq);

// overload operators
template <class T, class U> inline istream& operator>>(istream& is, pair<T, U>& p) { is >> p.first >> p.second; return is; }
template <class T> inline istream& operator>>(istream& is, vector<T>& v) { repe(x, v) is >> x; return is; }
template <class T, class U> inline ostream& operator<<(ostream& os, const pair<T, U>& p) { os << p.first << " " << p.second; return os; }
template <class T> inline ostream& operator<<(ostream& os, const vector<T>& v) { rep(i, sz(v)) { os << v.at(i); if (i != sz(v) - 1) os << " "; } return os; }
template <typename T, typename S> ostream &operator<<(ostream &os, const map<T, S> &mp) { for (auto &[key, val] : mp) { os << key << ":" << val << " "; } return os; }
template <typename T> ostream &operator<<(ostream &os, const set<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const multiset<T> &st) { auto itr = st.begin(); for (int i = 0; i < (int)st.size(); i++) { os << *itr << (i + 1 != (int)st.size() ? " " : ""); itr++; } return os; }
template <typename T> ostream &operator<<(ostream &os, const unordered_set<T> &st) { ll cnt = 0; for (auto &e : st) { os << e << (++cnt != (int)st.size() ? " " : ""); } return os; }
template <typename T> ostream &operator<<(ostream &os, queue<T> q) { while (q.size()) { os << q.front() << " "; q.pop(); } return os; }
template <typename T> ostream &operator<<(ostream &os, deque<T> q) { while (q.size()) { os << q.front(); q.pop_front(); if (q.size()) os << " "; } return os; }
template <typename T> ostream &operator<<(ostream &os, stack<T> st) { while (st.size()) { os << st.top() << " "; st.pop(); } return os; }
template <class T, class Container, class Compare> ostream &operator<<(ostream &os, priority_queue<T, Container, Compare> pq) { while (pq.size()) { os << pq.top() << " "; pq.pop(); } return os; }

template <typename T> int print_sep_end(string sep, string end, const T& val) { (void)sep; cout << val << end; return 0; };
template <typename T1, typename... T2> int print_sep_end(string sep, string end, const T1 &val, const T2 &...remain) {
    cout << val << sep;
    print_sep_end(sep, end, remain...);
    return 0;
};
template <typename... T> int print(const T &...args) { print_sep_end(" ", "\n", args...); return 0; };
template <typename... T> void flush() { cout << flush; };
template <typename... T> int print_and_flush(const T &...args) { print(args...); flush(); return 0; };
#define debug(...) debug_func(0, #__VA_ARGS__, __VA_ARGS__) // debug print
template <typename T> void input(T &a) { cin >> a; };
template <typename T1, typename... T2> void input(T1&a, T2 &...b) { cin >> a; input(b...); };
#ifdef LOCAL_TEST
template <typename T> void debug_func(int i, const T name) { (void)i; (void)name; cerr << endl; }
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, const T2 &a, const T3 &...b) {
    int scope = 0;
    for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
        cerr << name[i];
        if (name[i] == '(' || name[i] == '{') scope++;
        if (name[i] == ')' || name[i] == '}') scope--;
    }
    cerr << ":" << a << " ";
    debug_func(i + 1, name, b...);
}
template <typename T1, typename T2, typename... T3> void debug_func(int i, const T1 &name, T2 &a, T3 &...b) {
    int scope = 0;
    for ( ; (scope != 0 || name[i] != ',') && name[i] != '\0'; i++ ) {
        cerr << name[i];
        if (name[i] == '(' || name[i] == '{') scope++;
        if (name[i] == ')' || name[i] == '}') scope--;
    }
    cerr << ":" << a << " ";
    debug_func(i + 1, name, b...);
}
#endif
#ifndef LOCAL_TEST
template <typename... T>
void debug_func(T &...) {}
template <typename... T>
void debug_func(const T &...) {}
#endif
/**
 * @brief io.hpp
 * @docs docs/std/io.md
 */
//line 75 "answer.cpp"
#endif

这程序好像有点Bug,我给组数据试试?

詳細信息

Test #1:

score: 100
Accepted
time: 0ms
memory: 3560kb

input:

5
4 12 7
5 7 3 6
3 6
2 2
1 4
2 4
1 3
7 6
4 1
5 4
1 1
1 1
2 1
3 7
2 7 6
2 4
1 2
3 2
2 5
5 4
2 6
4 6
2 6
1 1 2
1
1 2
2 1 2
1 2
1 2
2 1 100
24 11
11 24

output:

9
5
1
1
1

result:

ok 5 number(s): "9 5 1 1 1"

Test #2:

score: 0
Accepted
time: 43ms
memory: 3780kb

input:

10000
19 12 20
8 12 1 5 11 7 17 13 19 6 3 9 10 15 14 20 4 18 16
4 11
7 1
8 4
16 19
1 13
15 2
16 2
8 7
3 15
11 13
5 20
18 14
17 14 20
2 9 1 12 8 11 10 17 18 16 3 15 5 14 20 13 7
15 10
3 2
5 16
7 8
6 1
6 4
18 16
1 8
4 1
20 6
6 9
4 15
7 5
14 9
1 3 18
9
15 18
17 15
11 14
7 19 7
3 1 2 5 6 4 7
5 1
4 5
3 1...

output:

12
14
1
19
6
5
1
11
19
4
3
10
4
1
4
19
15
2
18
4
17
5
1
2
5
17
3
2
6
15
6
3
6
4
4
7
3
7
4
1
16
15
2
3
6
12
12
7
6
8
8
6
8
11
16
1
4
9
8
14
2
6
19
19
16
8
20
14
8
12
7
9
6
8
2
17
9
5
5
3
6
6
20
8
13
11
10
5
3
6
3
1
8
5
8
11
7
14
10
9
9
11
7
9
5
2
8
14
10
5
3
5
5
10
1
6
9
16
5
3
19
1
4
8
8
10
4
2
1
15...

result:

ok 10000 numbers

Test #3:

score: 0
Accepted
time: 66ms
memory: 3608kb

input:

1000
59 96 80
10 66 50 63 15 2 28 41 21 58 45 42 14 79 32 33 37 52 1 74 57 27 72 77 8 49 40 78 31 12 70 62 73 26 69 24 3 65 67 23 6 47 17 38 54 80 5 64 13 51 44 71 39 34 75 19 55 30 68
61 14
14 26
7 28
53 3
51 79
68 24
50 1
39 45
74 18
13 12
5 68
41 1
32 30
69 13
61 59
26 68
17 56
74 14
22 25
71 41
...

output:

60
83
4
5
2
90
23
125
72
7
49
81
25
9
40
22
78
51
7
47
77
19
49
73
134
114
104
121
180
3
2
4
92
86
146
9
20
2
74
3
78
32
19
63
5
79
17
16
54
131
83
23
45
153
33
137
67
98
8
21
6
53
12
89
14
97
9
142
25
100
108
87
56
15
43
153
2
165
41
132
116
160
118
167
63
6
16
8
3
67
4
91
4
34
8
83
32
34
119
63
17...

result:

ok 1000 numbers

Test #4:

score: 0
Accepted
time: 89ms
memory: 4096kb

input:

100
37 237 517
339 497 190 114 508 454 321 58 102 392 289 207 291 459 16 320 55 378 269 63 407 244 397 101 357 328 412 62 70 468 457 21 253 453 509 169 400
202 476
217 222
418 58
440 109
90 110
266 197
159 398
412 317
259 239
500 34
178 508
329 162
192 409
467 144
223 300
2 289
96 366
191 427
142 12...

output:

6
4
11
6
6
7
11
11
2
3
14
2
4
2
3
2
2
5
7
3
3
5
3
13
8
7
17
6
2
8
3
9
3
10
2
3
3
2
2
2
5
12
2
5
5
959
369
56
1045
15
67
394
757
82
1008
56
2
1317
1590
217
37
345
32
515
103
326
1628
1450
293
12
397
358
403
420
220
150
392
588
3
978
1296
97
49
1377
7
1764
627
1652
188
65
11
12
2
2
1
5
1
2
2
2

result:

ok 100 numbers

Test #5:

score: 0
Accepted
time: 513ms
memory: 34272kb

input:

1
100 200000 200000
9411 13081 102149 19907 193611 24114 159730 105867 96529 35050 21890 102981 87777 182418 96659 118374 76106 107614 179526 45826 56158 33510 42240 53971 75573 98727 113513 35449 165290 167552 180720 151348 194140 132021 197828 138348 52399 151728 27676 75498 122825 15163 89905 262...

output:

2

result:

ok 1 number(s): "2"

Test #6:

score: 0
Accepted
time: 597ms
memory: 32960kb

input:

1
10000 200000 200000
125539 129221 106895 82089 118673 102890 99009 89855 30685 139232 82330 30021 87868 184659 66982 166291 148020 179364 42952 142770 119906 181288 92853 152547 189430 17447 7734 93014 55411 67422 67242 28915 103728 75454 199937 132948 87129 181803 14914 8713 163118 33277 88390 16...

output:

527

result:

ok 1 number(s): "527"

Test #7:

score: 0
Accepted
time: 415ms
memory: 22484kb

input:

1
100000 200000 200000
176259 110770 87448 103054 67926 181667 95184 41139 164840 76118 118577 22469 96470 178388 28793 14208 195743 59626 40970 7011 7847 104874 362 194226 168695 127655 101955 109363 169723 134588 10660 147697 13315 51590 34750 103356 121858 179173 2151 198823 146514 51392 54171 15...

output:

50020

result:

ok 1 number(s): "50020"

Test #8:

score: 0
Accepted
time: 374ms
memory: 34656kb

input:

1
1 200000 200000
200000
2 1
3 2
4 1
5 4
6 3
7 4
8 2
9 7
10 3
11 7
12 1
13 8
14 1
15 4
16 5
17 13
18 6
19 11
20 19
21 8
22 6
23 20
24 8
25 17
26 2
27 26
28 6
29 28
30 4
31 7
32 24
33 16
34 5
35 32
36 11
37 29
38 7
39 6
40 27
41 6
42 18
43 20
44 22
45 3
46 26
47 9
48 16
49 1
50 1
51 34
52 33
53 45
54...

output:

1

result:

ok 1 number(s): "1"

Test #9:

score: 0
Accepted
time: 256ms
memory: 34484kb

input:

1
1 200000 200000
200000
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 5...

output:

1

result:

ok 1 number(s): "1"

Extra Test:

score: 0
Extra Test Passed