alexjercan/bugnet huggingface dataset:
Multi-ending Story

You are a programmer who loves bishojo games (a sub-genre of dating simulation games).
A game, which is titled "I * C * P * C!" and was released yesterday, has arrived to you just now.
This game has multiple endings. When you complete all of those endings, you can get a special figure of the main heroine, Sakuya.
So, you want to hurry and play the game!
But, let's calm down a bit and think how to complete all of the endings in the shortest time first.

In fact, you have a special skill that allows you to know the structure of branching points of games.
By using the skill, you have found out that all of the branching points in this game are to select two choices "Yes" or "No", and once a different choice is taken the branched stories flow to different endings; they won't converge any more, like a binary tree.
You also noticed that it takes exactly one minute to proceed the game from a branching point to another branching point or to an ending.
In addition, you can assume it only takes negligible time to return to the beginning of the game (``reset'') and to play from the beginning to the first branching point.

The game has an additional feature called "Quick Save", which can significantly reduce the playing time for completion.
The feature allows you to record the point where you are currently playing and return there at any time later.
You can record any number of times, but you can hold only the last recorded point.
That is, when you use Quick Save, you overwrite the previous record. If you want to return to the overwritten point, you must play the game from the beginning once again.

Well, let's estimate how long it will take for completing all of the endings in the shortest time.

Input

A data set is given in the following format.

The first line of the data set contains one integer N (2 \leq N \leq 500{,}000), which denotes the number of the endings in this game.
The following N-1 lines describe the branching points.
The i-th line describes the branching point of ID number i and contains two integers Yes_i and No_i (i + 1 \leq Yes_i, No_i \leq N), which denote the ID numbers of the next branching points when you select Yes or No respectively.
Yes_i = N means that you can reach an ending if you select Yes, and so for No_i = N.
The branching point with ID 1 is the first branching point.
The branching points with ID between 2 and N-1 (inclusive) appear exactly once in Yes_i's and No_i's.

Output

Print the shortest time in a line.

Sample Input 1

4
2 3
4 4
4 4

Output for the Sample Input 1

6

Sample Input 2

5
5 2
3 5
5 4
5 5

Output for the Sample Input 2

8
Network Reliability

An undirected graph is given.
Each edge of the graph disappears with a constant probability.
Calculate the probability with which the remained graph is connected.

Input

The first line contains three integers N (1 \leq N \leq 14), M (0 \leq M \leq 100) and P (0 \leq P \leq 100), separated by a single space.
N is the number of the vertices and M is the number of the edges. P is the probability represented by a percentage.

The following M lines describe the edges.
Each line contains two integers v_i and u_i (1 \leq u_i, v_i \leq N).
(u_i, v_i) indicates the edge that connects the two vertices u_i and v_i.

Output

Output a line containing the probability with which the remained graph is connected.
Your program may output an arbitrary number of digits after the decimal point. However, the absolute error should be 10^{-9} or less.

Sample Input 1

3 3 50
1 2
2 3
3 1

Output for the Sample Input 1

0.500000000000

Sample Input 2

3 3 10
1 2
2 3
3 1

Output for the Sample Input 2

0.972000000000

Sample Input 3

4 5 50
1 2
2 3
3 4
4 1
1 3

Output for the Sample Input 3

0.437500000000
Runaway Domino

``Domino effect'' is a famous play using dominoes.
A player sets up a chain of dominoes stood.
After a chain is formed, the player topples one end of the dominoes.
The first domino topples the second domino, the second topples the third and so on.

You are playing domino effect.
Before you finish to set up a chain of domino,
a domino block started to topple, unfortunately.
You have to stop the toppling as soon as possible.

The domino chain forms a polygonal line on a two-dimensional coordinate system without self intersections.
The toppling starts from a certain point on the domino chain
and continues toward the both end of the chain.
If the toppling starts on an end of the chain, the toppling continue toward the other end.
The toppling of a direction stops when you touch the toppling point or the toppling reaches an end of the domino chain.

You can assume that:

You are a point without volume on the two-dimensional coordinate system.

The toppling stops soon after touching the toppling point.

You can step over the domino chain without toppling it.

You will given the form of the domino chain, the starting point of the toppling,
your coordinates when the toppling started, the toppling velocity and the your velocity.
You are task is to write a program that calculates your optimal move to stop the toppling at the earliest timing and
calculates the minimum time to stop the toppling.

Input

The first line contains one integer N,
which denotes the number of vertices in the polygonal line of the domino chain (2 \leq N \leq 1000).
Then N lines follow, each consists of two integers x_{i} and y_{i},
which denote the coordinates of the i-th vertex (-10,000 \leq x, y \leq 10000).
The next line consists of three integers x_{t}, y_{t} and v_{t},
which denote the coordinates of the starting point and the velocity of the toppling.
The last line consists of three integers x_{p}, y_{p} and v_{p},
which denotes the coordinates of you when the toppling started and the velocity (1 \leq v_{t} \lt v_{p} \leq 10).
You may assume that the starting point of the toppling lies on the polygonal line.

Output

Print the minimum time to stop the toppling.
The output must have a relative or absolute error less than 10^{-6}.

Sample Input 1

2
0 0
15 0
5 0 1
10 10 2

Output for the Sample Input 1

5.0

Sample Input 2

3
-10 0
0 0
0 10
-1 0 1
3 0 2

Output for the Sample Input 2

4.072027

Sample Input 3

2
0 0
10 0
5 0 1
9 0 3

Output for the Sample Input 3

2.0
Sunny Graph

The Sun is a great heavenly body.
The Sun is worshiped by various religions.
Bob loves the Sun and loves any object that is similar to the Sun.
He noticed that he can find the shape of the Sun in certain graphs.
He calls such graphs "Sunny".

We define the property "Sunny" mathematically.
A graph G=(V,E) with a vertex v \in V is called "Sunny" when there exists a subgraph G'=(V,E'), E' \subseteq E that has the following two properties.
(Be careful, the set of vertices must be the same.)

1. The connected component containing v is a cycle that consists of three or more vertices.

2. Every other component has exactly two vertices.

The following picture is an example of a subgraph G'=(V,E') that has the above property.

Given a simple graph (In each edge, two end points are different. Every pair of vertices has one or no edge.) G=(V,E),
write a program that decides whether the given graph with the vertex 1 is "Sunny" or not.

Input

The first line contains two integers N (odd, 1 \leq N \leq 200) and M (0 \leq M \leq 20,000), separated by a single space.
N is the number of the vertices and M is the number of the edges.

The following M lines describe the edges. Each line contains two integers v_i and u_i (1 \leq u_i, v_i \leq N).
(u_i, v_i) indicates the edge that connects the two vertices u_i and v_i.
u_i and v_i are different, and every pair (u_i,v_i) are different.

Output

Print a line containing "Yes" when the graph is "Sunny". Otherwise, print "No".

Sample Input 1

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

Output for the Sample Input 1

Yes

Sample Input 2

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

Output for the Sample Input 2

No
Testing Circuits

A Boolean expression is given.
In the expression, each variable appears exactly once.
Calculate the number of variable assignments that make the expression evaluate to true.

Input

A data set consists of only one line.
The Boolean expression is given by a string which consists of digits, x, (, ), |, &, and ~.
Other characters such as spaces are not contained.
The expression never exceeds 1,000,000 characters.
The grammar of the expressions is given by the following BNF.

<expression> ::= <term> | <expression> "|" <term>
<term> ::= <factor> | <term> "&" <factor>
<factor> ::= <variable> | "~" <factor> | "(" <expression> ")"
<variable> ::= "x" <number>
<number> ::= "1" | "2" |... | "999999" | "1000000"

The expression obeys this syntax and thus you do not have to care about grammatical errors.
When the expression contains N variables, each variable in {x1, x2,..., xN} appears exactly once.

Output

Output a line containing the number of variable assignments that make the expression evaluate to true in modulo 1,000,000,007.

Sample Input 1

(x1&x2)

Output for the Sample Input 1

1

Sample Input 2

(x1&x2)|(x3&x4)|(~(x5|x6)&(x7&x8))

Output for the Sample Input 2

121
World Trip

Kita_masa is planning a trip around the world.
This world has N countries and the country i has M_i cities.
Kita_masa wants to visit every city exactly once, and return back to the starting city.

In this world, people can travel only by airplane.
There are two kinds of airlines: domestic and international lines.
Since international airports require special facilities such as customs and passport control,
only a few cities in each country have international airports.

You are given a list of all flight routes in this world and prices for each route.
Now it's time to calculate the cheapest route for Kita_masa's world trip!

Input

The first line contains two integers N and K, which represent the number of countries and the number of flight routes, respectively.
The second line contains N integers, and the i-th integer M_i represents the number of cities in the country i.
The third line contains N integers too, and the i-th integer F_i represents the number of international airports in the country i.
Each of the following K lines contains five integers [Country 1] [City 1] [Country 2] [City 2] [Price].
This means that, there is a bi-directional flight route between the [City 1] in [Country 1] and the [City 2] in [Country 2], and its price is [Price].

Note that cities in each country are numbered from 1, and the cities whose city number is smaller or equal to F_i have international airports.
That is, if there is a flight route between the city c_1 in the country n_1 and the city c_2 in the country n_2 with n_1 \neq n_2, it must be c_1 \leq F_{n_1} and c_2 \leq F_{n_2}.
You can assume that there's no flight route which departs from one city and flies back to the same city, and that at most one flight route exists in this world for each pair of cities.

The following constraints hold for each dataset:

1 \leq N \leq 15

1 \leq M_i \leq 15

1 \leq F_i \leq 4

sum(F_i) \leq 15

1 \leq Price \leq 10,000

Output

Print a line that contains a single integer representing the minimum price to make a world trip.

If such a trip is impossible, print -1 instead.

Sample Input 1

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

Output for the Sample Input 1

4

Sample Input 2

2 16
4 4
2 2
1 1 1 2 1
1 1 1 3 2
1 1 1 4 1
1 2 1 3 1
1 2 1 4 2
1 3 1 4 1
2 1 2 2 1
2 1 2 3 2
2 1 2 4 1
2 2 2 3 1
2 2 2 4 2
2 3 2 4 1
1 1 2 1 1
1 1 2 2 2
1 2 2 1 2
1 2 2 2 1

Output for the Sample Input 2

8

Sample Input 3

2 2
2 1
1 1
1 1 1 2 1
1 1 2 1 1

Output for the Sample Input 3

-1
問題文

2つの整数 $A$，$B$ がある。
十進数での筆算によって $A - B$ を求める処理を以下に示す。

1. $A$，$B$ を十進数で表現する。添字は下位から順に $0,1,2,...,n-1$ とし、 $A = A_{n-1} A_{n-2} ... A_{0}$，$B = B_{n-1} B_{n-2} ... B_{0}$ とする。 $n$ は十進数で表現した時の$A$の桁数とする。 $B$ の桁数が $n$ より小さいとき、上位桁に $0$ を補う。

2. $borrow_{0} = 0$ とする。

3. 以下の処理を $i = 0$ から $n-1$ まで繰り返す。

3.1. $A_{i} - borrow_{i} \geq B_{i}$ ならば、 $C_{i} = A_{i} - borrow_{i} - B_{i}$ ， $borrow_{i+1} = 0$とする。

3.2. $A_{i} - borrow_{i} \lt B_{i}$ ならば、 $C_{i} = A_{i} - borrow_{i} + 10 - B_{i}$ ， $borrow_{i+1} = 1$とする。

$A - B$ の計算結果は $C_{n-1} C_{n-2} ... C_{0}$ となる。ただし、最上位に連続する $0$ は取り除く。

繰り下がりを忘れると3.2の処理での $borrow_{i+1} = 1$ が $borrow_{i+1} = 0$ となる。
最大 $K$ 回繰り下がりを忘れたときの計算結果の最大値を求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$A$ $B$ $K$

制約

$1 \leq B \lt A \leq 10^9$

$1 \leq K \leq 9$

出力

計算結果の最大値を1行に出力せよ。

Sample Input 1

99 98 1

Output for the Sample Input 1

1

Sample Input 2

100 2 3

Output for the Sample Input 2

198

Sample Input 3

538 84 1

Output for the Sample Input 3

554

Sample Input 4

2012 1987 1

Output for the Sample Input 4

1025
問題文

$N$ 本の線分 $s_1, s_2, ..., s_N$ が与えられる。このとき、
dist$(s_i, s_j)$, ( $1 \leq i,j \leq N, i \ne j $ )
のとりうる最小値を求めよ。
dist$(s_i, s_j)$ は

$\sqrt{(x_i-x_j)^2 + (y_i-y_j)^2}$, ( $(x_i,y_i)$ は $s_i$ 上の点、$(x_j,y_j)$ は $s_j$ 上の点)

のとりうる最小値で定義される。

以下はSample Inputのデータセットを図示したものである。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$
$x_{1,1}$ $y_{1,1}$ $x_{1,2}$ $y_{1,2}$
$x_{2,1}$ $y_{2,1}$ $x_{2,2}$ $y_{2,2}$
$...$
$x_{N,1}$ $y_{N,1}$ $x_{N,2}$ $y_{N,2}$

$s_i$は$(x_{i,1}, y_{i,1})$，$(x_{i,2}, y_{i,2})$を端点とする線分である。

制約

$2 \leq N \leq 10^5$

$0 \leq x_{i,j}, y_{i,j} \leq 100$

$(x_{i,1}, y_{i,1}) \neq (x_{i,2}, y_{i,2})$

出力

最小値を1行に出力せよ。出力される値には$10^{-5}$より大きな誤差があってはならない。

Sample Input 1

4
2 0 2 25
0 30 15 20
16 20 5 15
23 0 23 30

Output for the Sample Input 1

0.41380294

Sample Input 2

6
0 0 0 5
1 3 3 5
6 0 6 10
7 4 10 4
11 1 11 3
7 0 10 0

Output for the Sample Input 2

1.00000000

Sample Input 3

6
5 5 5 45
7 45 19 45
7 30 19 30
21 34 21 44
26 45 36 28
45 45 26 5

Output for the Sample Input 3

0.83553169

Sample Input 4

11
10 10 10 90
10 90 35 90
10 60 35 60
35 60 35 90
40 10 40 90
37 45 60 45
60 10 60 45
65 10 65 90
65 90 90 90
65 60 90 65
90 60 90 90

Output for the Sample Input 4

0.00000000
問題文

正整数列 $X_1,X_2,...,X_N$ がある。数列 $\{1,2,...,N\}$ から部分列 $S$ を選ぶ。ただし $S$ は以下の条件を満たす必要がある。

$T=\{X_s | s \in S\}$ とする。このとき、任意の $x \in T$ について、$x$ の約数(ただし $x$ は除く)は $T$ に含まれない。

条件を満たす $S$ のうち、最も多くの要素を含むものを求めよ。また、そのような $S$ が複数ある場合は辞書式順序で最小のものを求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$
$X_1$ $X_2$ $...$ $X_N$

制約

$1 \leq N \leq 100$

$1 \leq X_i \leq 10^8$

$i \neq j$ ならば $X_i \neq X_j$

出力

求める $S$ の各要素を1行にスペースを空けて昇順で出力せよ。

Sample Input 1

3
25 125 5

Output for the Sample Input 1

1

$T=\{X_1\}=\{25\}$ は条件を満たす。

Sample Input 2

3
6 3 2

Output for the Sample Input 2

2 3

$T=\{X_2,X_3\}=\{2,3\}$ は条件を満たす。

Sample Input 3

10
10 9 8 7 6 5 4 3 2 1

Output for the Sample Input 3

1 2 3 4 5

$T=\{X_1,X_2,X_3,X_4,X_5\}=\{6,7,8,9,10\}$ は条件を満たす。
$T=\{X_1,X_2,X_4,X_5,X_7\}=\{4,6,7,9,10\}$ も条件を満たすが、$\{1,2,4,5,7\}$は $\{1,2,3,4,5\}$ より辞書順で大きいので答とはならない。
問題文

有理数列 $X_0, X_1, X_2, ..., X_N$ がある。各項は以下のように定義される。

$X_0 = 0$

$X_i = X_{i-1}$ $op_i$ $Y_i$ ($1 \leq i \leq N$). ただし $op_i$ は $＋$、$−$、$×$、$÷$のいずれかである。

$X_N$ を求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$
$o_1$ $Y_1$
$o_2$ $Y_2$
$...$
$o_N$ $Y_N$

$o_i = 1$ のとき $op_i$ は＋、$o_i = 2$ のとき $op_i$ は−、$o_i = 3$ のとき $op_i$ は×、$o_i = 4$ のとき $op_i$ は÷である。

制約

$1 \leq N \leq 10^5$

$1 \leq o_i \leq 4$

$-10^6 \leq Y_i \leq 10^6$

$o_i=4$ ならば $Y_i \neq 0$

$X_N$ は $-2^{31}$ 以上 $2^{31}$ 未満の整数となる。

出力

$X_N$ の値を1行に出力せよ。

Sample Input 1

4
1 1
4 2
2 4
3 4

Output for the Sample Input 1

-14

$X_0 = 0$

$X_1 = X_0 ＋ 1 = 1$

$X_2 = X_1 ÷ 2 = 1/2$

$X_3 = X_2 − 4 = -7/2$

$X_4 = X_3 × 4 = -14$
問題文

実数変数 $x_1, x_2, ..., x_N$ は以下の条件を満たす。

$0 \leq x_i \leq 1$ ($1 \leq i \leq N$)

$w_1x_1+w_2x_2+...+w_Nx_N \leq W$

このとき $v_1x_1+v_2x_2+...+v_Nx_N$ のとりうる最大値を求めよ。そのような最大値は実際に存在することが知られている。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$ $W$
$w_1$ $v_1$
$w_2$ $v_2$
$...$
$w_N$ $v_N$

制約

$1 \leq N \leq 10^5$

$1 \leq W \leq 10^5$

$-10^4 \leq w_i \leq 10^4$

$-10^4 \leq v_i \leq 10^4$

出力

$v_1x_1+v_2x_2+...+v_Nx_N$ のとりうる最大値を1行に出力せよ。
出力には $10^{-3}$ を超える誤差があってはならない。

Sample Input 1

1 1
3 1

Output for the Sample Input 1

0.333333

$x_1=1/3$ のとき最大となる。

Sample Input 2

2 3
3 3
1 2

Output for the Sample Input 2

4.000000

Sample Input 3

2 1
-1 -3
3 10

Output for the Sample Input 3

3.666667
問題文

ふたりのプレイヤーがゲームをしている。以下、ゲームのルールを説明する。

$N×N$ マスのボードがあり、各マスには数字 $X_{i,j}$ ($1 \leq i,j \leq N$)が書かれている。先手と後手は交互に手を選んで点を積み重ねてゆく。最初に先手は $F$ 点持っており、後手は $0$ 点持っている。

$t$ ターン目($1 \leq t \leq 2N$)のプレイヤーの行動を示す。

これ以降自分と相手がどのような手を選んだとしても自分が負けてしまう場合、即座に負けを宣言してゲームを終了する。

これまでに自分が一度も選んだことのない数字を $1,2,...,N$ から一つ選んで $Y_t$ とする。

先手の手番(つまり $t$ が奇数)かつ $t>1$ のとき、先手は $X_{Y_{t}, Y_{t-1}}$ 点を得る。 $t=1$ のとき、先手の得点に変化は起きない。

後手の手番(つまり $t$ が偶数)のとき、後手は $X_{Y_{t-1}, Y_{t}}$ 点を得る。

$t=2N$ のとき、勝敗判定を行いゲームを終了する。点を多く獲得しているプレイヤーの勝ちで、点が同じ場合は引き分けとする。

ターンを終了して相手に手番を渡す。

先手と後手は以下の基準で手を選ぶ。

自分が勝ちになる手が存在するときはその手を選ぶ。自分が勝ちになる手が複数存在するときはその中からゲームが最短で終了するような手を選ぶ。

自分が勝ちになる手が存在しないとき、引き分けになる手が存在すればその手を選ぶ。

自分が負けになる手しか存在しないとき、ゲームが最長で終了するような手を選ぶ。

先手と後手がこのような基準で手を選んだとき、ゲームの結果とゲームが何ターンで終了するかを求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$ $F$
$X_{1,1}$ $X_{1,2}$ $...$ $X_{1,N}$
$X_{2,1}$ $X_{2,2}$ $...$ $X_{2,N}$
$...$
$X_{N,1}$ $X_{N,2}$ $...$ $X_{N,N}$

制約

$1 \leq N \leq 8$

$-10^5 \leq F \leq 10^5$

$-10^5 \leq X_{i,j} \leq 10^5$

出力

先手が勝つ場合は"First"、後手が勝つ場合は"Second"、引き分けになる場合は"Draw"と1行目に出力せよ。
2行目にゲームが終了するのが何ターン目になるのかを出力せよ。

Sample Input 1

2 0
1 3
1 1

Output for the Sample Input 1

Second
3

Sample Input 2

2 100
0 0
0 0

Output for the Sample Input 2

First
2

Sample Input 3

2 5
3 4
7 6

Output for the Sample Input 3

Draw
4

両者が最善を尽くした場合 $(Y_1,Y_2,Y_3,Y_4) = (1,2,2,1)$ となり、このとき両者11点を獲得して引き分けになる。
問題文

文字列 $S$ が与えられる。$S$ のすべてのアナグラムのうち、回文になっているものの個数を求めよ。

文字列 $X$ が $Y$ のアナグラムであるとは、$X$ が $Y$ と等しいか、$X$ の文字を並び替えたら $Y$ に等しくなることをいう。例えば文字列abcdに対して、abcdやcbdaなどはアナグラムであるが、abedやcabやabcddなどはアナグラムでない。

文字列 $X$ が回文であるとは、$X$ を逆から読んだものが $X$ 自身と等しくなることをいう。例えばabcやabは回文でなく、aやabccbaなどは回文である。

入力

入力は以下の形式に従う。

$S$

制約

$1 \leq |S| \leq 40$ ( $|S|$ は文字列 $S$ の長さ)

$S$ は小文字の英字のみを含む。

答は $2^{63}$ 未満であることが保証される。

出力

個数を1行に出力せよ。

Sample Input 1

ab

Output for the Sample Input 1

0

abのアナグラムはabとbaの二つがあるが、どちらも回文になっていない。

Sample Input 2

abba

Output for the Sample Input 2

2

abbaとbaabの二つの文字列が回文かつアナグラムになっている。
問題文

以下の条件を満たす整数列 $X_1, X_2, ..., X_N$ の個数を求めよ。

任意の整数 $i$ ($1 \leq i \leq N$)に対して、$X_j=i$ となる $j$ ($1 \leq j \leq N$)が存在する。

$X_s = t$

$X_{a_i} < X_{b_i}$ ($1 \leq i \leq C$)

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$ $C$ $s$ $t$
$a_1$ $b_1$
$a_2$ $b_2$
$...$
$a_C$ $b_C$

制約

$1 \leq N \leq 2000$

$0 \leq C \leq N$

$1 \leq s \leq N$

$1 \leq t \leq N$

$1 \leq a_i \leq N$

$1 \leq b_i \leq N$

$a_i \neq b_i$

$i \neq j$ ならば $a_i \neq a_j$

出力

条件を満たす数列の個数を $10^9+7$ で割った余りを1行に出力せよ(条件を満たす数列の個数がたかだか有限個しかないことは簡単に示される)。

Sample Input 1

3 1 1 1
1 3

Output for the Sample Input 1

2

$\{X_1, X_2, X_3\} = \{1, 2, 3\}, \{1, 3, 2\}$ の2つが条件を満たす。

Sample Input 2

4 2 1 1
2 3
3 2

Output for the Sample Input 2

0

$X_2<X_3$ かつ $X_3<X_2$ を満たす数列は存在しない。
問題文

1つの陰関数 $Ax^2+Bxy+Cy^2+Dx+Ey+F=0$ で与えられる曲線と、
$N$ 個の陰関数 $A_ix+B_iy+C_i=0$ で与えられる直線がある。
これらの曲線と直線によって平面がいくつの領域に分割されているか求めよ。

以下はSample Inputのデータセットを図示したものである。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$
$A$ $B$ $C$ $D$ $E$ $F$
$A_1$ $B_1$ $C_1$
$...$
$A_N$ $B_N$ $C_N$

制約

$1 \leq N \leq 20$

$-100 \leq A,B,C,D,E,F \leq 100$

$-100 \leq A_i,B_i,C_i \leq 100$

$A_i \neq 0$ または $B_i \neq 0$

曲線は楕円(正円を含む)、放物線、双曲線のいずれかである。

同一の直線が存在する場合がある。

出力

領域の数を1行に出力せよ。

Sample Input 1

1
1 0 1 0 0 -1
1 -1 0

Output for the Sample Input 1

4

Sample Input 2

2
1 0 0 0 -1 0
2 -1 -1
6 9 1

Output for the Sample Input 2

7

Sample Input 3

2
1 0 -1 0 0 -1
3 0 6
-5 0 -10

Output for the Sample Input 3

6
問題文

実数変数 $X_1, X_2, ...$ があり、何らかの初期値が割り振られている。
これから $Q$ 個の情報が順番に与えられる。与えられる情報は以下の2種類のいずれかである。

min $\{X_{a_i}, X_{a_i+1}, ..., X_{b_i}\} = y_i$ である。

変数 $X_{a_i}, X_{a_i+1}, ..., X_{b_i}$ に $y_i$ を代入する。

これら $Q$ 個の情報が矛盾しないように各変数の初期値を選べるかどうか判定せよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$Q$
$t_1$ $a_1$ $b_1$ $y_1$
$t_2$ $a_2$ $b_2$ $y_2$
$...$
$t_Q$ $a_Q$ $b_Q$ $y_Q$

$t_i=0$ のとき、min$\{X_{a_i}, X_{a_i+1}, ..., X_{b_i}\} = y_i$ であることを示している。

$t_i=1$ のとき、$X_{a_i}, X_{a_i+1}, ..., X_{b_i}$ に $y_i$ を代入することを示している。

制約

$1 \leq Q \leq 5 \times 10^4$

$0 \leq t_i \leq 1$

$1 \leq a_i \leq b_i \leq 10^9$

$1 \leq y_i \leq 10^9$

出力

全ての情報が矛盾しないような初期値が存在すれば"YES"を、そうでなければ"NO"を1行に出力せよ。

Sample Input 1

5
0 1 2 8
0 2 3 9
0 2 2 11
1 2 2 7
0 1 3 7

Output for the Sample Input 1

YES

初期値を、$\{X_1, X_2, X_3\} = \{8, 11, 9\}$ とする。このとき、

min$\{X_1, X_2\} = $min$\{8, 11\} = 8$

min$\{X_2, X_3\} = $min$\{11, 9\} = 9$

min$\{X_2\} = $min$\{11\} = 11$

$X_2 = 7$

min$\{X_1, X_2, X_3\} = $min$\{8, 7, 9\} = 7$

となり全ての情報と矛盾しない。

Sample Input 2

2
1 10 100 333
0 100 1000 555

Output for the Sample Input 2

NO

1つ目の情報で $X_{10}$ から $X_{100}$ の値が $333$ になったことが分かる。
2つ目の情報は min$\{X_{100},...,X_{1000}\}=555$ となることを示しているが、これは $X_{100}=333$ であることから矛盾が生じる。
問題文

$(X_{1,1}∨X_{1,2})∧(X_{2,1}∨X_{2,2})∧...∧(X_{M,1}∨X_{M,2})$ で表される論理式が与えられる。ただし $X_{i,j} \in \{x_1, x_2, ..., x_N, ~x_1, ~x_2, ..., ~x_N\}$である。

与えられた論理式が真となるように各変数 $x_i$ ($1 \leq i \leq N$)に真偽値を割り当てたい。そのような割り当て方が何通りあるかを求めよ。

入力

入力は以下の形式に従う。与えられる数は全て整数である。

$N$ $M$
$Y_{1,1}$ $Y_{1,2}$
$Y_{2,1}$ $Y_{2,2}$
$...$
$Y_{M,1}$ $Y_{M,2}$

$Y_{i,j}>0$ のとき、$X_{i,j} = x_{Y_{i,j}}$ であり、$Y_{i,j}<0$ のとき、$X_{i,j} = ~x_{-Y_{i,j}}$ である。

制約

$1 \leq N \leq 1000$

$N/2 \leq M \leq N$

$1 \leq |Y_{i,j}| \leq N$

各変数は論理式に1回か2回だけ現れる。すなわち、任意の $k$ ($1 \leq k \leq N$)に対して $X_{i,j}=x_k$ または $X_{i,j}=~x_k$ となるような $(i,j)$ の組は1個か2個だけ存在する。

出力

論理式を真にするような各変数の真偽値の割り当て方が何通りあるかを $10^9+7$ で割った余りを1行に出力せよ。

Sample Input 1

2 1
1 -2

Output for the Sample Input 1

3

論理式 $(x1∨~x2)$ を真にする割り当ては $(x1,x2) = (True, True), (True, False), (False, False)$ の3通りである。

Sample Input 2

3 2
-1 -2
1 -3

Output for the Sample Input 2

4

論理式 $(~x1∨~x2)∧(x1∨~x3)$ を真にする割り当ては $(x1,x2,x3) = (True, False, True), (True, False, False), (False, True, False), (False, False, False)$ の4通りである。
問題文

$1,2,...,N$ を並べ替えた順列がある。2つの異なる数字 $i$, $j$ を選んで入れ替えることを繰り返してソートされた状態( $1,2,...,N$ の順番に並んだ状態)にしたい。
数字 $i$, $j$ を入れ替える度にコストが $c_{i,j}$ 必要になる。

順列 $p$ に対して、 $p$ をソートするのに必要な最小コストを $f(p)$ とする。
$f(p)$ のとりうる最大値を求めよ。

入力

入力は以下のフォーマットに従う。与えられる数は全て整数である。

$N$
$c_{1,1}$ $c_{1,2}$ $...$ $c_{1,N}$
$c_{2,1}$ $c_{2,2}$ $...$ $c_{2,N}$
$...$
$c_{N,1}$ $c_{N,2}$ $...$ $c_{N,N}$

制約

$2 \leq N \leq 8$

$0 \leq c_{i,j} \leq 10^5$

$c_{i,j} = c_{j,i}$

$c_{i,i} = 0$

出力

最大値を1行に出力せよ。

Sample Input 1

3
0 1 3
1 0 8
3 8 0

Output for the Sample Input 1

5

もっとも必要コストが大きい順列は$\{1,3,2\}$で、

1,2を入れ替えて$\{2,3,1\}$とする。

1,3を入れ替えて$\{2,1,3\}$とする。

1,2を入れ替えて$\{1,2,3\}$とする。

以上の操作によりコスト5でソートでき、またこれが最善であることが証明できる。
他の順列もコスト5以下でソートできることを示すことができる。
Chicken or the Egg

Time Limit: 8 sec / Memory Limit: 64 MB

A: 卵が先か鶏が先か

2012/2/8

卵が先か鶏が先かという問題はいまだかつて誰もわからなかった．
しかし今回の琵琶湖遺跡で発掘で獲得した文書にはその答えが記されているという．

2012/2/9

文書はchickenとeggという単語のみで構成されていた．このままでは答えがわからない．

2012/2/10

さらに文書を読み進めると，文書中の単語の順番は産まれた順番を表していることがわかった．
"eggchicken"とあった場合は，先に鶏が産まれ，その後に鶏が卵を産んだということを示している．

2012/2/11

"eggchickenchickenegg"という文を見つけた．
この文では，先に卵が産まれ，その卵から鶏が産まれる．
さらに昨日のルールでいくと，この鶏が鶏を産むということになってしまう．
鶏は卵を産まなければならないのに，これはおかしい．

2012/2/12

調査をする内に，文は同一単語が連続で出てきたときに分割されることがわかった．
"eggchickenchickenegg"であれば，"eggchicken"と"chickenegg"という文に分割される．
複数の文がある場合は，先頭の単語から順番に同じ時代に産まれたことを表すらしい．
さっきの例だと，"eggchicken"の一つ目の単語eggと，"chickenegg"の一つ目の単語chickenは，同じ時代に産まれたことを表すようだ．
さらに，これらを産んだchickenとeggも同じ時代に産まれたことを表す．
ん？これだと結局鶏か卵かどっちが先に産まれたかわからないじゃないか．

2012/2/13

どうやら同じ時代として産まれたものの内，より文の前方に書かれた方が先に産まれたようだ．
昨日の例だと，chickenの方が文の前方にあるから，結局鶏が最初に産まれたことになるらしい．
解読のルールを理解することができた．これで安心だ．
いや，まだぼう大な量の文書を解読せねばならないのだ．早く解読を急がねば．

2012/3/15

もう寿命が近いそうだ．手も足もロクに動かない．
この文書も結局時間が足りず解読できなかった．
この際誰でもいいから，去る前にどちらが先だったかを私に教えてくれないだろうか…．

あなたは親族に依頼を受けてやってきた人です．
おじいさんの最後の願いを叶えるために解読してください．

Input

文字列 s が1行与えられる． 文字列 s はeggとchickenの二つの単語で構成されており，文字列内に含まれる単語数は1以上1000以下である．

Output

eggかchickenのいずれかを出力せよ．

Sample Input 1

eggchickenegg

Sample Output 1

egg

Sample Input 2

chickeneggeggchicken

Sample Output 2

egg

Sample Input 3

eggeggchicken

Sample Output 3

chicken