結果
問題 | No.1709 Indistinguishable by MEX |
ユーザー |
|
提出日時 | 2022-07-05 01:49:07 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 2,896 bytes |
コンパイル時間 | 2,640 ms |
コンパイル使用メモリ | 203,752 KB |
実行使用メモリ | 31,756 KB |
最終ジャッジ日時 | 2024-12-14 23:15:59 |
合計ジャッジ時間 | 37,346 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 2 RE * 1 |
other | WA * 4 RE * 12 TLE * 10 |
コンパイルメッセージ
main.cpp: In function 'void solve(long long int)': main.cpp:81:19: warning: 'r' may be used uninitialized [-Wmaybe-uninitialized] 81 | for(ll i=n-2;i>r;i--){ | ~^~ main.cpp:64:10: note: 'r' was declared here 64 | ll l,r; | ^ main.cpp:12:35: warning: 'l' may be used uninitialized [-Wmaybe-uninitialized] 12 | #define fr(x,s,e) for(ll x = s; x < e; ++x) | ^ main.cpp:64:8: note: 'l' was declared here 64 | ll l,r; | ^
ソースコード
/************************************************ ADIT SHAH ****** DA-IICT ****** adit19shah ************************************************/#include<bits/stdc++.h>using namespace std;#define fr(x,s,e) for(ll x = s; x < e; ++x)#define ll long long int#define ld long double#define imx 1e18#define imn -1e18#define pb push_back#define pll pair<ll,ll>#define vl vector<ll>#define ff first#define ss second#define bl bool#define tr true#define fl false#define all(v) v.begin(),v.end()#define eps 1e-9; //Epsilon value below which approximate floating type number as 0//#define mod1 1000000007#define mod1 998244353#define jadap ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0)//For implementing policy based Data Structure, ordered_set#include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/tree_policy.hpp>using namespace __gnu_pbds;#define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>void yno(bool ok){if(ok)cout<<"YES\n";elsecout<<"NO\n";}vl fact(100001);void pre(){fact[0]=1,fact[1]=1;fr(i,2,100001){fact[i]=(fact[i-1]*i)%mod1;fact[i]%=mod1;}}void solve(ll z){ll n; cin>>n;vl v(n);fr(i,0,n) cin>>v[i];if(n==1){cout<<1<<"\n";return;}vl p(n),s(n);ordered_set st;fr(i,0,n) st.insert(i);p[0]=v[0],s[n-1]=v[n-1];fr(i,1,n) p[i]=min(v[i],p[i-1]);for(ll i=n-2;i>=0;i--) s[i]=min(v[i],s[i+1]);ll l,r;fr(i,0,n) if(!p[i]) {l=i;break;}for(ll i=n-1;i>=0;i--) if(!s[i]) {r=i;break;}vl u(n);st.erase(v[0]);st.erase(v[n-1]);st.erase(0);fr(i,1,l){if(p[i]==p[i-1]){ll a=0;while(p[i]==p[i-1]) i++,a++;u[p[i-1]]=a;i--;}elsest.erase(v[i]);}for(ll i=n-2;i>r;i--){if(s[i]==s[i+1]){ll a=0;while(s[i]==s[i+1]) i--,a++;u[s[i+1]]=a;i++;}elsest.erase(v[i]);}/*fr(i,0,n) cout<<u[i]<<" ";cout<<"\n";for(auto x:st) cout<<x<<" ";cout<<"\n";*/ll ans=1;for(ll i=n-1;i>=0;i--){if(u[i]){ll op=(st.size()-st.order_of_key(i));ans*=(fact[op]/fact[op-u[i]]);ans%=mod1;ll zz=u[i];while(zz){st.erase(prev(st.end()));zz--;}}}cout<<ans<<"\n";}int main(){#ifndef ONLINE_JUDGEfreopen("../input.txt", "r", stdin);freopen("../output.txt", "w", stdout);#endif // ONLINE_JUDGEjadap;int T=1;cin>>T;pre();fr(z,0,T){solve(z);}return 0;}