QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#794258#9807. Make Them Believeucup-team5243#AC ✓0ms3864kbC++239.1kb2024-11-30 13:15:352024-11-30 13:15:35

Judging History

This is the latest submission verdict.

  • [2024-11-30 13:15:35]
  • Judged
  • Verdict: AC
  • Time: 0ms
  • Memory: 3864kb
  • [2024-11-30 13:15:35]
  • Submitted

answer

#include <bits/stdc++.h>
using namespace std;

// ★★★★★ いわゆるQCFium、おまじない的につけとくと速い
#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 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>>>;

// ★★★ 多次元vector初期化用の関数、ちょっと癖があるけど短く書ける
// テンプレなし:vector dp(n+1, vector(m+1, vector<ll>(k+1, 0)));
// テンプレあり:auto dp = vvv<ll>(n+1, m+1, k+1, 0);
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)))); }

// ★★ いわゆるheapq、C++のデフォルトpriority_queueは大きい順(Python、Nimとは逆)に注意
template <class T> using priority_queue_min = priority_queue<T, vector<T>, greater<T>>;

// ★ 定数系、お好みで
constexpr double PI = 3.14159265358979323;
constexpr int INF = 100100111; constexpr ll INFL = 3300300300300300491LL;
float EPS = 1e-8; double EPSL = 1e-10;


// ★★★★ 入出力高速化、おまじない
struct Nyan { Nyan() { cin.tie(nullptr); ios::sync_with_stdio(false); cout << fixed << setprecision(18); } } nyan;

// マクロ類
// わりと全部使う
// all: sort(all(a)) とか lower_bount(all(a), x) とか
// rep: オーバーロードしているので、引数の個数で挙動が変わる、基本Pythonのrangeに近い感覚で使えるようにしてるはず
//      rep(5) -> 5回ループ(新たにループ変数は作らない)
//      rep(i, 5) -> i=0,1,...,4
//      rep(i, 5) -> i=0,1,...,4
//      rep(i, 1, 6) -> i=1,...,4
//      rep(i, 1, 6, 2) -> i=1,3,5
//      rep(i, 10, -1, -1) -> i=10,9,.., 0
// smod, sdiv: python-like mod, div
// uniq: 重複削除、ソートされるのに注意
// vl a = {1, 3, 2, 5, 2, 3}; uniq(a); // a = {1, 2, 3, 5}
#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());}

// ★★ Yes, No なくても困らない
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);};

// ★★★★ max, min, sum のvector向けオーバーロード、デフォルトがちょっと使いにくいので
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; };

// ★★★ vector の各要素を1増やす/減らす、グラフ系の入力受けでちょっと嬉しい
// vector<ll> a = {1, 2, 4}; ++a; // a = {2, 3, 5}
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; }

// ★★★★ 整数pow/sqrt
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;
}

// ★★★★ chmax, chmin
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; }

// ★★★★★ vector を直接cinできるようにする
// map, set, multiset とかを直接 cout できるようにする
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, deque<T> q);
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, deque<T> q) { while (q.size()) { os << q.front(); q.pop_front(); if (q.size()) os << " "; } 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; }
#define out(x) cout << x << endl
#define dout(x) cout << fixed << setprecision(10) << x << endl

int main(){
  vs S(8);
  vl T(8);
  rep(i,8){
    cin >> S[i];
    cin >> T[i];
  } 
  vs S1(4);
  vl T1(4);
  rep(i,4){
    if (T[2*i] < T[2*i+1]){
      S1[i] = S[2*i+1];
      T1[i] = T[2*i+1];
    }else{
      S1[i] = S[2*i];
      T1[i] = T[2*i];
    }
  }
  vs S2(2);
  vl T2(2);
  rep(i,2){
    if (T1[2*i] < T1[2*i+1]){
      S2[i] = S1[2*i+1];
      T2[i] = T1[2*i+1];
    }else{
      S2[i] = S1[2*i];
      T2[i] = T1[2*i];
    }
  }
  if (T2[0] < T2[1]){
    cout << S2[1] << " beats " << S2[0] << endl;

  }else{
    cout << S2[0] << " beats " << S2[1] << endl;
  }
}

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

詳細信息

Test #1:

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

input:

LNG 55
WBG 65
HLE 70
BLG 75
TES 48
T1 80
GEN 60
FLY 50

output:

T1 beats BLG

result:

ok 3 tokens

Test #2:

score: 0
Accepted
time: 0ms
memory: 3804kb

input:

LNG 55
WBG 65
HLE 70
BLG 81
TES 48
T1 80
GEN 60
FLY 50

output:

BLG beats T1

result:

ok 3 tokens

Test #3:

score: 0
Accepted
time: 0ms
memory: 3788kb

input:

P6 73
4 22
UN 84
Q 55
J 68
QR8 18
W 27
9J7 1

output:

UN beats J

result:

ok 3 tokens

Test #4:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

DZ 63
5J 8
F4 34
L9 85
9 90
2 47
6EL 69
W 86

output:

9 beats L9

result:

ok 3 tokens

Test #5:

score: 0
Accepted
time: 0ms
memory: 3664kb

input:

H 37
LQU 58
8 51
25E 71
LWI 91
0EZ 61
F 56
G 33

output:

LWI beats 25E

result:

ok 3 tokens

Test #6:

score: 0
Accepted
time: 0ms
memory: 3788kb

input:

L 81
AB 15
N0 30
HO 55
1 92
A 69
8 12
44 14

output:

1 beats L

result:

ok 3 tokens

Test #7:

score: 0
Accepted
time: 0ms
memory: 3636kb

input:

PGI 95
0DO 90
4 55
Q4R 30
U 68
1 82
5XT 64
BJ8 6

output:

PGI beats 1

result:

ok 3 tokens

Test #8:

score: 0
Accepted
time: 0ms
memory: 3792kb

input:

D9C 48
UH 10
DN 39
VK 77
OY 70
1 93
BA 1
V 3

output:

1 beats VK

result:

ok 3 tokens

Test #9:

score: 0
Accepted
time: 0ms
memory: 3864kb

input:

HM 88
TP 60
B 84
J 13
C 78
W5I 94
K 66
O1 96

output:

O1 beats HM

result:

ok 3 tokens

Test #10:

score: 0
Accepted
time: 0ms
memory: 3636kb

input:

L 63
H 13
KX 37
AP 55
9 50
3R 11
F 2
E 16

output:

L beats 9

result:

ok 3 tokens

Test #11:

score: 0
Accepted
time: 0ms
memory: 3552kb

input:

P 7
6P 37
DE 30
3F 66
5 31
0 76
58 59
2G 61

output:

0 beats 3F

result:

ok 3 tokens

Test #12:

score: 0
Accepted
time: 0ms
memory: 3600kb

input:

QPU 71
HN 72
M 41
H 45
T4 37
LF 46
99C 40
QT0 63

output:

HN beats QT0

result:

ok 3 tokens

Test #13:

score: 0
Accepted
time: 0ms
memory: 3576kb

input:

U2 55
8 72
2YZ 4
0ER 6
KO 64
NGO 90
G9 5
2G 65

output:

NGO beats 8

result:

ok 3 tokens

Test #14:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

YW 40
TN 32
R 26
UF 29
FNB 12
H 23
E 15
X 24

output:

YW beats X

result:

ok 3 tokens

Test #15:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

M 55
T 96
8FJ 13
P4Q 1
J 76
O 38
E 79
S 51

output:

T beats E

result:

ok 3 tokens

Test #16:

score: 0
Accepted
time: 0ms
memory: 3636kb

input:

Q 4
Y 78
J 57
T73 72
92B 16
P 18
I 51
4B 11

output:

Y beats I

result:

ok 3 tokens

Test #17:

score: 0
Accepted
time: 0ms
memory: 3728kb

input:

UC9 23
N 1
K8T 47
1L 51
U3X 16
3RC 59
87N 20
HM1 63

output:

HM1 beats 1L

result:

ok 3 tokens

Test #18:

score: 0
Accepted
time: 0ms
memory: 3656kb

input:

Y5 83
L 94
8C 55
3OF 99
RDN 47
8G 59
8 60
P 68

output:

3OF beats P

result:

ok 3 tokens

Test #19:

score: 0
Accepted
time: 0ms
memory: 3804kb

input:

MJ 65
MT 4
5 30
DBD 26
R9F 42
O 70
F 88
7 19

output:

F beats MJ

result:

ok 3 tokens

Test #20:

score: 0
Accepted
time: 0ms
memory: 3660kb

input:

Q 81
573 66
XPW 15
I 12
2 94
EWP 93
LLC 67
6SN 80

output:

2 beats Q

result:

ok 3 tokens

Test #21:

score: 0
Accepted
time: 0ms
memory: 3804kb

input:

U 30
UTY 23
QH 22
EO 94
PL 63
E2 25
BNB 21
56 75

output:

EO beats 56

result:

ok 3 tokens

Test #22:

score: 0
Accepted
time: 0ms
memory: 3796kb

input:

J33 81
LYS 54
8 50
9P 39
B6 90
I0 77
4L 60
KG 88

output:

B6 beats J33

result:

ok 3 tokens

Test #23:

score: 0
Accepted
time: 0ms
memory: 3648kb

input:

OW 12
IG 63
R 13
W6 61
WD8 37
AZ 57
4H 52
M9 47

output:

IG beats AZ

result:

ok 3 tokens

Test #24:

score: 0
Accepted
time: 0ms
memory: 3640kb

input:

CQ 90
4R 17
JBR 26
1M6 100
I 82
Z9J 27
F2 34
L5F 63

output:

1M6 beats I

result:

ok 3 tokens

Test #25:

score: 0
Accepted
time: 0ms
memory: 3552kb

input:

8 8
10 10
6 6
11 11
13 13
7 7
9 9
12 12

output:

13 beats 11

result:

ok 3 tokens

Test #26:

score: 0
Accepted
time: 0ms
memory: 3528kb

input:

000 100
0OO 13
OO0 14
08O 10
0O0 11
OOO 12
O0O 15
O09 16

output:

000 beats O09

result:

ok 3 tokens

Extra Test:

score: 0
Extra Test Passed