E:
1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<string> 5 #include<queue> 6 #include<vector> 7 #include<set> 8 #include<map> 9 #include<cmath> 10 #include<algorithm> 11 12 #define ll long long 13 #define mem(a,b) memset(a,b,sizeof(a)) 14 const int maxn=200005; 15 using namespace std; 16 map<int,int>minn,maxx; 17 int data[maxn]; 18 int but[maxn],vis[maxn]; 19 int cnt; 20 int mod=998244353; 21 int main() 22 { 23 int n;cin>>n; 24 for(int i=1;i<=n;i++) 25 { 26 scanf("%d",data+i); 27 maxx[data[i]]=i; 28 } 29 int t=1; 30 ll ans=1; 31 for(int i=1;i<=n;i++) 32 { 33 //如果当前的坐标比当前阶梯最右端要靠右,则进入下一个阶梯,ans*2 34 if(i>t) 35 { 36 ans=ans*2%mod; 37 } 38 t=max(t,maxx[data[i]]); //令t等于新的阶梯的右端 39 } 40 printf("%lld\n",ans); 41 return 0; 42 }