Codeforces Round 153 (Rated for Div. 2)

Table of contents

A. Not a Substring

topic:

Analysis:

B. Fancy Coins

topic:

Analysis:

C. Game on Permutation

topic:

Analysis:

A. Not a Substring

topic:

A bracket sequence is a string consisting of characters '(' and/or ')'. A regular bracket sequence is a bracket sequence that can be transformed into a correct arithmetic expression by inserting characters '1' and '+' between the original characters of the sequence. For example:

  • bracket sequences "()()" and "(())" are regular (they can be transformed into "(1)+(1)" and "((1+1)+1)", respectively);
  • bracket sequences ")(", "(" and ")" are not regular.

You are given a bracket sequence ss; let's define its length as nn. Your task is to find a regular bracket sequence tt of length 2n such that ss does not occur in tt as a contiguous substring, or report that there is no such sequence.

Input

The first line contains a single integer t(1≤t≤1000) — the number of test cases.

The only line of each test case contains a string ss (2≤|s|≤50), consisting of characters "(" and/or ")".

Output

For each test case, print the answer to it. If there is no required regular bracket sequence, print NO in a separate line. Otherwise, print YES in the first line, and the required regular bracket sequence tt itself in the second line. If there are multiple answers — you may print any of them.

Example

input

4
)(
(()
()
))()

output

YES
(())
YES
()()()
NO
YES
()(()())

Analysis:

Discuss the output in two cases: () and ((()))

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
void solve()
{
	string x;
	cin>>x;
	int l=0,r=0,flag=0,sum=0,a=0,b=0;
	for(int i=0;i<x.size();i++)
	{
		if(x[i]=='(')
		l++,a++,b=0;
		else
		r++,b++,a=0;
		if(r>l)
		flag=1;
		sum=max(sum,a);
		sum=max(sum,b);
	}
	int n=x.size();
	if(flag||n%2)
	{
		cout<<"YES"<<endl;
		if(sum!=1)
		{
			while(n--)
			cout<<"()";
		}
		else
		{
			int nn=n;
			while(n--)
			cout<<"(";
			while(nn--)
			cout<<")";
		}
		cout<<endl;
	}
	else
	{
		if(sum==1&&n==2)
		cout<<"NO"<<endl;
		else if(sum!=1)
		{
			cout<<"YES"<<endl;
			while(n--)
			cout<<"()";
			cout<<endl;
 	    }
 	    else
		{
			cout<<"YES"<<endl;
			int nn=n;
			while(n--)
			cout<<"(";
			while(nn--)
			cout<<")";
			cout<<endl;
		}
	}
	return ;
}
signed main()
{
	IOS
	int t=1;
	cin>>t;
	while(t--)
	solve();
	return 0;
}

B. Fancy Coins

topic:

Monocarp is going to make a purchase with cost of exactly mm burles.

He has two types of coins, in the following quantities:

  • coins worth 11 burle: a1a1 regular coins and infinitely many fancy coins;
  • coins worth kk burles: akak regular coins and infinitely many fancy coins.

Monocarp wants to make his purchase in such a way that there's no change — the total worth of provided coins is exactly mm. He can use both regular and fancy coins. However, he wants to spend as little fancy coins as possible.

What's the smallest total number of fancy coins he can use to make a purchase?

Input

The first line contains a single integer t(1≤t≤3⋅1e4) — the number of testcases.

The only line of each testcase contains four integers m,k,a1m,k,a1 and akak (1≤m≤1081≤m≤108;0≤a1,ak≤1e8) — the cost of the purchase, the worth of the second type of coin and the amounts of regular coins of both types, respectively.

Output

For each testcase, print a single integer — the smallest total number of fancy coins Monocarp can use to make a purchase.

Example
input

4
11 3 0 0
11 3 20 20
11 3 6 1
100000000 2 0 0


output

5
0
1
50000000


Note
In the first testcase, there are no regular coins of either type. Monocarp can use 2 fancy coins worth 1 burle and 3 fancy coins worth 3 (since k=3) burles to get 11 total burles with 5 total fancy coins.

In the second testcase, Monocarp has a lot of regular coins of both types. He can use 11 regular coins worth 1 burle, for example. Notice that Monocarp doesn't have to minimize the total number of used coins. That way he uses 0 fancy coins.

In the third testcase, Monocarp can use 5 regular coins worth 1 burle and 1 regular coin worth 3 burles. That will get him to 8 total burles when he needs 11. So, 1 fancy coin worth 3 burles is enough.

Analysis:

deduce mathematical formulas

#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
	int T;
	cin >> T;
	while (T--)
	{
		int m, k, a1, ak;
		cin >> m >> k >> a1 >> ak;
		int r = m % k + max(0, (min(m, a1) - m % k)) / k * k;
		cout << max(0, r - a1) + max(0, (m - r) / k - ak) << endl;
	}
	return 0;
}

C. Game on Permutation

topic:

Alice and Bob are playing a game. They have a permutation p of size n (a permutation of size n is an array of size n where each element from 1 to n occurs exactly once). They also have a chip, which can be placed on any element of the permutation.

Alice and Bob make alternating moves: Alice makes the first move, then Bob makes the second move, then Alice makes the third move, and so on. During the first move, Alice chooses any element of the permutation and places the chip on that element. During each of the next moves, the current player has to move the chip to any element that is simultaneously to the left and strictly less than the current element (i. e. if the chip is on the i-th element, it can be moved to the j-th element if j<i and pj<pi). If a player cannot make a move (it is impossible to move the chip according to the rules of the game), that player wins the game.

Let's say that the i-th element of the permutation is lucky if the following condition holds:

if Alice places the chip on the i-th element during her first move, she can win the game no matter how Bob plays (i. e. she has a winning strategy).
You have to calculate the number of lucky elements in the permutation.

Input
The first line contains a single integer t (1≤t≤104) — the number of test cases.

The first line of each test case contains a single integer n (1≤n≤3⋅105) – the number of elements in the permutation.

The second line contains n integers p1,p2,…,pn (1≤pi≤n). All pi are distinct.

The sum of n over all test cases doesn't exceed 3⋅105.

Output
For each test case, print a single integer — the number of lucky elements in the permutation.

Example
input

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


output

1
0
1
2


Note
In the first test case of the example, the 3-rd element of the permutation is lucky.

In the second test case of the example, there are no lucky elements.

In the third test case of the example, the 2-nd element of the permutation is lucky.

In the fourth test case of the example, the 3-rd and the 4-th element of the permutation are lucky.

Analysis:

Set two parameters, compare with the current value respectively, update the parameter value, and count

#include<bits/stdc++.h>
#define int long long
using namespace std;
int p[300000];
void solve()
{
	int n,i,m1,m2,c;
	cin>>n;
	for(i=0;i<n;i++)
	cin>>p[i];
	m1=INT_MAX;
	m2=INT_MAX;
	c=0;
	for(i=0;i<n;i++)
	{
		if(p[i]<m1)
		m1=p[i];
		else if(p[i]<m2)
		{
			m2=p[i];
			c++;
		}
	}
	cout<<c<<endl;
}
signed main(){
	ios::sync_with_stdio(false),cin.tie(0);
	int t;
	cin>>t;
	while(t--)
	solve();
	return 0;
}

Next article: 2023 Henan Mengxin League Game (6): Henan University of Technology

Recommended music: I am not him

おすすめ

転載: blog.csdn.net/weixin_74088105/article/details/132363774