Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma GCC optimize("Ofast,unroll-loops")
- #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,mmx,avx,avx2")
- /*HAR HAR MAHADEV
- ヽ`、ヽ``、ヽ`ヽ`、、ヽ `ヽ 、ヽ`🌙`ヽヽ`ヽ、ヽ`
- ヽ`、ヽ``、ヽ 、``、 `、ヽ` 、` ヽ`ヽ、ヽ `、ヽ``、
- ヽ、``、`、ヽ``、 、ヽヽ`、`、、ヽヽ、``、 、 ヽ`、
- ヽ``、 ヽ`ヽ`、、ヽ `ヽ 、 🚶ヽ````ヽヽヽ`、、ヽ`、、ヽ*/
- //think twice code once
- //when its getting hard why you started
- # include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef pair<int, int> pi;
- typedef pair<ll, ll> pl;
- typedef vector<int> vi;
- typedef vector<ld> vd;
- typedef vector<ll> vl;
- typedef vector<pi> vpi;//typedef for datatype and #define for macro
- typedef vector<pl> vpl;
- # define fast ios_base::sync_with_stdio(false);cin.tie(NULL);
- # define MOD 1000000007
- # define endl '\n'
- # define FOR(i, a, b) for (int i=a; i<(b); i++)
- # define F0R(i, a) for (int i=0; i<(a); i++)
- # define FORd(i,a,b) for (int i = (b)-1; i >= a; i--)
- # define F0Rd(i,a) for (int i = (a)-1; i >= 0; i--)
- # define INF 9e18
- # define PI 3.14159265358979323846
- # define lb lower_bound
- # define ub upper_bound
- # define mp make_pair
- # define pb push_back
- # define fi first
- # define se second
- # define all(a) a.begin(), a.end()
- mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
- ll lcm(ll a, ll b)
- {
- return ((a * b) / __gcd(a, b));
- }
- int main()
- {
- fast;
- ll t;
- cin >> t;
- while (t--)
- {
- ll i;
- string s; cin >> s;
- ll n = s.length();
- string check = s;
- sort(all(check));
- if (check == s)
- {
- cout << "YES" << endl;
- continue;
- }
- vl v1;
- ll j = s[0] - 48;
- for (i = 1; i < s.length(); i++)
- {
- if (s[i] - 48 >= j)
- {
- j = s[i] - 48;
- continue;
- }
- else
- {
- v1.pb(i);
- }
- }
- int flag1 = 0;
- for (i = 1; i < v1.size(); i++)
- {
- if (v1[i - 1] + 1 < v1[i]) continue;
- else
- {
- flag1 = 1;
- break;
- }
- }
- vl v2;
- v2.pb(0);
- j = s[1] - 48;
- for (i = 2; i < s.length(); i++)
- {
- if (s[i] - 48 >= j)
- {
- j = s[i] - 48;
- continue;
- }
- else
- {
- v2.pb(i);
- }
- }
- int flag2 = 0;
- for (i = 1; i < v2.size(); i++)
- {
- if (v2[i - 1] + 1 < v2[i]) continue;
- else
- {
- flag2 = 1;
- break;
- }
- }
- vl v3;//last ko lun
- j = s[n - 1] - 48;
- for (i = n - 2; i >= 0; i--)
- {
- if (s[i] - 48 <= j)
- {
- j = s[i] - 48;
- continue;
- }
- else
- {
- v3.pb(i);
- }
- }
- int flag3 = 0;
- reverse(all(v3));
- for (i = 1; i < v3.size(); i++)
- {
- if (v3[i - 1] + 1 < v3[i]) continue;
- else
- {
- flag3 = 1;
- break;
- }
- }
- vl v4;//last ko chod dun
- v4.pb(n - 1);
- j = s[n - 2] - 48;
- for (i = n - 3; i >= 0; i--)
- {
- if (s[i] - 48 <= j)
- {
- j = s[i] - 48;
- continue;
- }
- else
- {
- v4.pb(i);
- }
- }
- int flag4 = 0;
- reverse(all(v4));
- for (i = 1; i < v4.size(); i++)
- {
- if (v4[i - 1] + 1 < v4[i]) continue;
- else
- {
- flag4 = 1;
- break;
- }
- }
- if (flag1 == 0 || flag2 == 0 || flag3 == 0 || flag4 == 0)
- {
- cout << "YES" << endl;
- }
- else
- {
- cout << "NO" << endl;
- }
- }
- return 0;
- }
- /* stuff you should look for
- * stack/set/gcd/palindrome/twopointer/slidingwindow
- prefix sum/range query/ patterns/matrices/string
- lexographicaly/xoor/subsequence subarray/overlapping intervals
- factors(rootn) primefactorisation vectorofallfactors dfs bfs msdfs
- lowerbound-point to first element ya toh equal ya toh just bada;
- upperbound- just bada element to the target if not then last wala return karega dono
- hi case me
- kahi pe bhi in 0 indexing v.begin()+0, se jis index tak jana hai usse ek jyada tak
- availaible snip-dfs,mint,quadraticformula,2dvector
- mytemp,negativemod,primefactorisation
- * int overflow, array bounds
- * special cases (n=1?)
- * do smth instead of nothing and stay organized
- * WRITE STUFF DOWN
- * DON'T GET STUCK ON ONE APPROACH
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement