Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

CPPREA10 - Re-arrang Array 10

Cho mảng A[] chỉ bao gồm các ký tự I hoặc D. Ký tự I được hiểu là tăng (Increasing) ký tự D được hiểu là giảm (Degreeasin). Sử dụng các số từ 1 đến 9, hãy đưa ra số nhỏ nhất được đoán nhận từ mảng A[]. Chú ý, các số không được phép lặp lại. Dưới đây là một số ví dụ mẫu:

- A[] = “I” : số tăng nhỏ nhất là 12.

- A[] = “D” : số giảm nhỏ nhất là 21

- A[] =”DD” : số giảm nhỏ nhất là 321

- A[] = “DDIDDIID”: số thỏa mãn 321654798

Input

Dòng đầu tiên đưa vào số lượng bộ test T. 

Những dòng kế tiếp đưa vào T bộ test. Mỗi bộ test là một xâu ID.

T, Length(A) thỏa mãn ràng buộc: 1≤ T ≤100; 1≤ Length(A) ≤9; .

Output

Đưa ra kết quả mỗi test theo từng dòng.

Example

Input Output
4
I
D
DD
DDIDDIID
12
21
321
321654798

Được gửi lên bởi:adm
Ngày:2019-10-25
Thời gian chạy:1s
Giới hạn mã nguồn:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Ngôn ngữ cho phép:C C++ 4.3.2 CPP CPP14

hide comments
2022-06-11 19:13:52


Last edit: 2022-12-21 16:19:57
2022-01-15 01:40:15
:| Nhưng nếu 1 -> 9 nhưng test len = 9 thì nó sẽ chứa số 10 :| điều này là tối kị rùi ạ :| vì 1 với 10 là lặp lại số 1 và ko có số 0

Last edit: 2022-01-15 01:54:15
2020-11-22 15:23:21
#include<iostream>
#include<stack>
using namespace std;

void solution()
{
string s;
stack <int> mystack;
cin>>s;
int i,j=0;
for(i=0; i<s.length(); i++)
{
if(s[i]=='D')
{
if(i==0||s[i-1]=='I')
mystack.push(++j);
mystack.push(++j);
}
else
{ while(!mystack.empty())
{ cout<<mystack.top();
mystack.pop();
}
if(i==0) cout<<++j;
if(s[i+1]!='D')cout<<++j;
}
}
while(!mystack.empty())
{ cout<<mystack.top();
mystack.pop();
}
cout<<endl;
}

int main()
{
int T;
cin>>T;
while(T--)
{
solution();
}
return 0;
}
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.