A - Rated for Me

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 100

問題文

プログラミングコンペティションサイト AtCode は、プログラミングコンテストを定期的に開催しています。

AtCode で次に開催されるコンテストは ABC と呼ばれ、レーティングが 1200 未満の参加者のレーティングが変動します。

その次に開催されるコンテストは ARC と呼ばれ、レーティングが 2800 未満の参加者のレーティングが変動します。

そのさらに次に開催されるコンテストは AGC と呼ばれ、すべての参加者のレーティングが変動します。

高橋くんの AtCode でのレーティングは R です。彼のレーティングが変動する次のコンテストは何でしょうか?

制約

  • 0 ≤ R ≤ 4208
  • R は整数である。

入力

入力は以下の形式で標準入力から与えられる。

R

出力

高橋くんのレーティングが変動する次のコンテストの名称(ABC, ARC, AGC のいずれか)を出力せよ。


入力例 1

1199

出力例 1

ABC

11991200 未満なので ABC でレーティングが変動します。


入力例 2

1200

出力例 2

ARC

12001200 未満ではないので ABC ではレーティングが変動しませんが、2800 未満ではあるので ARC でレーティングが変動します。


入力例 3

4208

出力例 3

AGC

Score : 100 points

Problem Statement

A programming competition site AtCode regularly holds programming contests.

The next contest on AtCode is called ABC, which is rated for contestants with ratings less than 1200.

The contest after the ABC is called ARC, which is rated for contestants with ratings less than 2800.

The contest after the ARC is called AGC, which is rated for all contestants.

Takahashi's rating on AtCode is R. What is the next contest rated for him?

Constraints

  • 0 ≤ R ≤ 4208
  • R is an integer.

Input

Input is given from Standard Input in the following format:

R

Output

Print the name of the next contest rated for Takahashi (ABC, ARC or AGC).


Sample Input 1

1199

Sample Output 1

ABC

1199 is less than 1200, so ABC will be rated.


Sample Input 2

1200

Sample Output 2

ARC

1200 is not less than 1200 and ABC will be unrated, but it is less than 2800 and ARC will be rated.


Sample Input 3

4208

Sample Output 3

AGC
B - AcCepted

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 200

問題文

文字列 S が与えられます。S のそれぞれの文字は英大文字または英小文字です。 S が次の条件すべてを満たすか判定してください。

  • S の先頭の文字は大文字の A である。
  • S の先頭から 3 文字目と末尾から 2 文字目の間(両端含む)に大文字の C がちょうど 1 個含まれる。
  • 以上の A, C を除く S のすべての文字は小文字である。

制約

  • 4 ≤ |S| ≤ 10|S| は文字列 S の長さ)
  • S のそれぞれの文字は英大文字または英小文字である。

入力

入力は以下の形式で標準入力から与えられる。

S

出力

S が問題文中の条件すべてを満たすなら AC、そうでなければ WA と出力せよ。


入力例 1

AtCoder

出力例 1

AC

1 文字目が A3 文字目が C でそれ以外の文字はすべて小文字であり、すべての条件を満たします。


入力例 2

ACoder

出力例 2

WA

2 文字目が C であってはいけません。


入力例 3

AcycliC

出力例 3

WA

最後の文字が C であってもいけません。


入力例 4

AtCoCo

出力例 4

WA

C2 個以上含んではいけません。


入力例 5

Atcoder

出力例 5

WA

C1 個も含まないのもいけません。

Score : 200 points

Problem Statement

You are given a string S. Each character of S is uppercase or lowercase English letter. Determine if S satisfies all of the following conditions:

  • The initial character of S is an uppercase A.
  • There is exactly one occurrence of C between the third character from the beginning and the second to last character (inclusive).
  • All letters except the A and C mentioned above are lowercase.

Constraints

  • 4 ≤ |S| ≤ 10 (|S| is the length of the string S.)
  • Each character of S is uppercase or lowercase English letter.

Input

Input is given from Standard Input in the following format:

S

Output

If S satisfies all of the conditions in the problem statement, print AC; otherwise, print WA.


Sample Input 1

AtCoder

Sample Output 1

AC

The first letter is A, the third letter is C and the remaining letters are all lowercase, so all the conditions are satisfied.


Sample Input 2

ACoder

Sample Output 2

WA

The second letter should not be C.


Sample Input 3

AcycliC

Sample Output 3

WA

The last letter should not be C, either.


Sample Input 4

AtCoCo

Sample Output 4

WA

There should not be two or more occurrences of C.


Sample Input 5

Atcoder

Sample Output 5

WA

The number of C should not be zero, either.

C - All Green

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

プログラミングコンペティションサイト AtCode は、アルゴリズムの問題集を提供しています。 それぞれの問題には、難易度に応じて点数が付けられています。 現在、1 以上 D 以下のそれぞれの整数 i に対して、100i 点を付けられた問題が p_i 問存在します。 これらの p_1 + … + p_D 問が AtCode に収録された問題のすべてです。

AtCode のユーザーは 総合スコア と呼ばれる値を持ちます。 ユーザーの総合スコアは、以下の 2 つの要素の和です。

  • 基本スコア: ユーザーが解いた問題すべての配点の合計です。
  • コンプリートボーナス: 100i 点を付けられた p_i 問の問題すべてを解いたユーザーは、基本スコアと別にコンプリートボーナス c_i 点を獲得します (1 ≤ i ≤ D)

AtCode の新たなユーザーとなった高橋くんは、まだ問題を 1 問も解いていません。 彼の目標は、総合スコアを G 点以上にすることです。 このためには、少なくとも何問の問題を解く必要があるでしょうか?

制約

  • 1 ≤ D ≤ 10
  • 1 ≤ p_i ≤ 100
  • 100 ≤ c_i ≤ 10^6
  • 100 ≤ G
  • 入力中のすべての値は整数である。
  • c_i, G はすべて 100 の倍数である。
  • 総合スコアを G 点以上にすることは可能である。

入力

入力は以下の形式で標準入力から与えられる。

D G
p_1 c_1
:
p_D c_D

出力

総合スコアを G 点以上にするために解く必要のある最小の問題数を出力せよ。なお、この目標は必ず達成可能である(制約を参照のこと)。


入力例 1

2 700
3 500
5 800

出力例 1

3

この場合、AtCode には 100 点を付けられた問題が 3 問、200 点を付けられた問題が 5 問あります。100 点の 3 問をすべて解いた際のコンプリートボーナスは 500 点、200 点の 5 問をすべて解いた際のコンプリートボーナスは 800 点です。高橋くんの目標は総合スコアを 700 点以上にすることです。

目標を達成する方法の一つは、200 点問題を 4 問解いて 800 点の基本スコアを得ることです。しかし、100 点問題を 3 問すべて解くと、基本スコア 300 点に加えてコンプリートボーナスの 500 点が与えられて総合スコアが 800 点となり、より少ない問題数で目標を達成することができます。


入力例 2

2 2000
3 500
5 800

出力例 2

7

入力例 1 と似たケースですが、今回の高橋くんの目標は 2000 点以上です。この場合、200 点の 5 問は必ずすべて解かなければならず、さらに 100 点問題を 2 問解くことで総合スコアが 2000 点となります。


入力例 3

2 400
3 500
5 800

出力例 3

2

ふたたび入力例 1 と似たケースですが、今回の高橋くんの目標は 400 点以上です。この場合、200 点問題を 2 問解くだけで目標を達成できます。


入力例 4

5 25000
20 1000
40 1000
50 1000
30 1000
1 1000

出力例 4

66

500 点の問題が 1 問しか存在しませんが、このような場合でもその問題を解くことでコンプリートボーナスが与えられます。

Score : 300 points

Problem Statement

A programming competition site AtCode provides algorithmic problems. Each problem is allocated a score based on its difficulty. Currently, for each integer i between 1 and D (inclusive), there are p_i problems with a score of 100i points. These p_1 + … + p_D problems are all of the problems available on AtCode.

A user of AtCode has a value called total score. The total score of a user is the sum of the following two elements:

  • Base score: the sum of the scores of all problems solved by the user.
  • Perfect bonuses: when a user solves all problems with a score of 100i points, he/she earns the perfect bonus of c_i points, aside from the base score (1 ≤ i ≤ D).

Takahashi, who is the new user of AtCode, has not solved any problem. His objective is to have a total score of G or more points. At least how many problems does he need to solve for this objective?

Constraints

  • 1 ≤ D ≤ 10
  • 1 ≤ p_i ≤ 100
  • 100 ≤ c_i ≤ 10^6
  • 100 ≤ G
  • All values in input are integers.
  • c_i and G are all multiples of 100.
  • It is possible to have a total score of G or more points.

Input

Input is given from Standard Input in the following format:

D G
p_1 c_1
:
p_D c_D

Output

Print the minimum number of problems that needs to be solved in order to have a total score of G or more points. Note that this objective is always achievable (see Constraints).


Sample Input 1

2 700
3 500
5 800

Sample Output 1

3

In this case, there are three problems each with 100 points and five problems each with 200 points. The perfect bonus for solving all the 100-point problems is 500 points, and the perfect bonus for solving all the 200-point problems is 800 points. Takahashi's objective is to have a total score of 700 points or more.

One way to achieve this objective is to solve four 200-point problems and earn a base score of 800 points. However, if we solve three 100-point problems, we can earn the perfect bonus of 500 points in addition to the base score of 300 points, for a total score of 800 points, and we can achieve the objective with fewer problems.


Sample Input 2

2 2000
3 500
5 800

Sample Output 2

7

This case is similar to Sample Input 1, but the Takahashi's objective this time is 2000 points or more. In this case, we inevitably need to solve all five 200-point problems, and by solving two 100-point problems additionally we have the total score of 2000 points.


Sample Input 3

2 400
3 500
5 800

Sample Output 3

2

This case is again similar to Sample Input 1, but the Takahashi's objective this time is 400 points or more. In this case, we only need to solve two 200-point problems to achieve the objective.


Sample Input 4

5 25000
20 1000
40 1000
50 1000
30 1000
1 1000

Sample Output 4

66

There is only one 500-point problem, but the perfect bonus can be earned even in such a case.

D - We Love ABC

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 400

問題文

文字列 TABC 数 とは、以下の条件をすべて満たす整数の組 (i, j, k) の個数です。

  • 1 ≤ i < j < k ≤ |T||T|T の長さ)
  • T_i = AT_iT の先頭から i 番目の文字)
  • T_j = B
  • T_k = C

例えば、T = ABCBC のとき、条件をすべて満たす組 (i, j, k)(1, 2, 3), (1, 2, 5), (1, 4, 5)3 個であるため、T の ABC 数は 3 です。

文字列 S が与えられます。S のそれぞれの文字は A, B, C, ? のいずれかです。

S に含まれる ? の個数を Q とします。S に含まれる ? をそれぞれ A, B, C のいずれかに置き換えることで 3^Q 通りの文字列が作られます。これらの文字列すべての ABC 数の和を求めてください。

ただし、この和は非常に大きくなりうるため、和を 10^9 + 7 で割った余りを出力してください。

制約

  • 3 ≤ |S| ≤ 10^5
  • S のそれぞれの文字は A, B, C, ? のいずれかである。

入力

入力は以下の形式で標準入力から与えられる。

S

出力

3^Q 通りの文字列すべての ABC 数の和を 10^9 + 7 で割った余りを出力せよ。


入力例 1

A??C

出力例 1

8

この場合、Q = 2 であり、? をそれぞれ A, B, C のいずれかに置き換えることで 3^Q = 9 通りの文字列が作られます。これらの文字列それぞれの ABC 数を以下に示します。

  • AAAC: 0
  • AABC: 2
  • AACC: 0
  • ABAC: 1
  • ABBC: 2
  • ABCC: 2
  • ACAC: 0
  • ACBC: 1
  • ACCC: 0

これらの和は 0 + 2 + 0 + 1 + 2 + 2 + 0 + 1 + 0 = 8 であり、810^9 + 7 で割った余りである 8 を出力します。


入力例 2

ABCBC

出力例 2

3

Q = 0 のときは、S 自体の ABC 数を 10^9 + 7 で割った余りを出力します。この文字列は問題文中で例として挙げたものと同じであり、その ABC 数は 3 です。


入力例 3

????C?????B??????A???????

出力例 3

979596887

この場合、3^Q 通りの文字列すべての ABC 数の和は 2291979612924 であり、これを 10^9 + 7 で割った余りである 979596887 を出力します。

Score : 400 points

Problem Statement

The ABC number of a string T is the number of triples of integers (i, j, k) that satisfy all of the following conditions:

  • 1 ≤ i < j < k ≤ |T| (|T| is the length of T.)
  • T_i = A (T_i is the i-th character of T from the beginning.)
  • T_j = B
  • T_k = C

For example, when T = ABCBC, there are three triples of integers (i, j, k) that satisfy the conditions: (1, 2, 3), (1, 2, 5), (1, 4, 5). Thus, the ABC number of T is 3.

You are given a string S. Each character of S is A, B, C or ?.

Let Q be the number of occurrences of ? in S. We can make 3^Q strings by replacing each occurrence of ? in S with A, B or C. Find the sum of the ABC numbers of all these strings.

This sum can be extremely large, so print the sum modulo 10^9 + 7.

Constraints

  • 3 ≤ |S| ≤ 10^5
  • Each character of S is A, B, C or ?.

Input

Input is given from Standard Input in the following format:

S

Output

Print the sum of the ABC numbers of all the 3^Q strings, modulo 10^9 + 7.


Sample Input 1

A??C

Sample Output 1

8

In this case, Q = 2, and we can make 3^Q = 9 strings by by replacing each occurrence of ? with A, B or C. The ABC number of each of these strings is as follows:

  • AAAC: 0
  • AABC: 2
  • AACC: 0
  • ABAC: 1
  • ABBC: 2
  • ABCC: 2
  • ACAC: 0
  • ACBC: 1
  • ACCC: 0

The sum of these is 0 + 2 + 0 + 1 + 2 + 2 + 0 + 1 + 0 = 8, so we print 8 modulo 10^9 + 7, that is, 8.


Sample Input 2

ABCBC

Sample Output 2

3

When Q = 0, we print the ABC number of S itself, modulo 10^9 + 7. This string is the same as the one given as an example in the problem statement, and its ABC number is 3.


Sample Input 3

????C?????B??????A???????

Sample Output 3

979596887

In this case, the sum of the ABC numbers of all the 3^Q strings is 2291979612924, and we should print this number modulo 10^9 + 7, that is, 979596887.