Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define nl "\n"
- #define fi first
- #define se second
- #define pb push_back
- #define ll long long
- #define ull unsigned ll
- #define RV return void
- #define inf 2000000000
- #define sz(x) int(x.size())
- #define all(v) v.begin(), v.end()
- #define rall(v) v.rbegin(), v.rend()
- #define Mini(x) *min_element(all(x))
- #define Maxi(x) *max_element(all(x))
- #define fixed(n) fixed << setprecision(n)
- // #define ceil(w, m) (((w) / (m)) + ((w) % (m) ? 1 : 0))
- #define cin(v) for (auto&i:v) cin >> i;
- #define cout(v) for (auto&i:v) cout << i << " ";
- #define clr(memo, x) memset(memo, x, sizeof memo)
- #define updmin(a, b) a = min(a, b)
- #define updmax(a, b) a = max(a, b)
- #define vi vector < int >
- #define vl vector < ll >
- #define vc vector < char >
- #define vs vector < string >
- #define v2i vector < vector < int > >
- #define v2l vector < vector < int > >
- #define seti set < int >
- #define setl set < ll >
- #define mapii map < int , int >
- #define mapll map < ll , ll >
- #define mapli map < ll , int >
- #define mapci map < char , int >
- #define mapsi map < string , int >
- #define pll pair < ll , ll >
- #define pii pair < int , int >
- #define range(l,r,x) for(int i=l ; i < r ; i+=x)
- #define FastCode ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
- vector < string > ternary= {"NO\n" , "YES\n"};
- void Zainab(){
- #ifndef ONLINE_JUDGE
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- }
- /*================================ Prblem solution ================================ */
- bool Sort(stack <int > st ){
- while(!st.empty()){
- int temp= st.top();
- st.pop();
- if(!st.empty()){
- if(st.top() > temp) {
- return 0;
- }
- }
- }
- return 1;
- }
- void myCode(){
- string s;
- cin >> s;
- stack < int > st;
- int n = sz(s);
- bool flag =0;
- for(int i =0 ; i < n ; i++){
- if(s[i]=='+') st.push(1);
- else if(s[i]=='-') {
- if(!st.empty())
- st.pop();
- else RV(cout <<"NO\n");
- }
- else if(s[i]=='0') {
- if(sz(st) and st.top() == 1 )
- st.top()--;
- if(Sort(st)) RV(cout <<"NO\n");
- flag=1;
- }
- else if(s[i]=='1'){
- if(!Sort(st)) RV(cout <<"NO\n");
- flag =1;
- }
- }
- if(!flag) RV(cout << "YES\n");
- for(int i =0 ; i < n ; i++){
- if(s[i]=='0' or s[i]=='1'){
- char c = s[i];
- if(i + 1 < n and s[i+1]!=s[i] and (s[i+1]=='0' or s[i+1]=='1')) RV(cout <<"NO\n");
- }
- if(s[i]=='1'){
- int j =i+1;
- while( j < n and s[j]!='0' and s[j]!='+'){
- j++;
- }
- // j--;
- if(j < n and s[j]=='0') RV(cout <<"NO\n");
- }
- if(s[i]=='0'){
- int j =i+1;
- while( j < n and s[j]!='1' and s[j]!='-'){
- j++;
- }
- // j--;
- if(j < n and s[j]=='1') RV(cout <<"NO\n");
- }
- }
- for(int i =0 ; i < n ; i++){
- if(s[i]=='1' ){
- int j =i+1;
- int cnt=0;
- while( j < n and s[j]!='0' ){
- if(s[j]=='+') cnt++;
- else if(s[j]=='-' and cnt > 0) cnt--;
- else break;
- j++;
- }
- // cout << cnt << " " << i << " " << j <<nl;
- if(cnt == 0 and j < n and s[j]=='0' )
- RV(cout <<"NO\n");
- }
- if(s[i]=='0' ){
- int j =i+1;
- int cnt=0;
- while( j < n and s[j]!='1' ){
- if(s[j]=='+') cnt++;
- else if(s[j]=='-' and cnt > 0) cnt--;
- else break;
- j++;
- }
- // cout << cnt << " " << i << " " << j <<nl;
- if(cnt == 0 and j < n and s[j]=='1' )
- RV(cout <<"NO\n");
- }
- }
- cout <<"YES" << nl;
- }
- int main(){
- FastCode ;
- Zainab() ;
- int testCase=1;
- cin >> testCase ;
- for(int i=1 ; i<= testCase ; i++)
- myCode();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement