Submission #47990255


Source Code Expand

#include<bits/stdc++.h>
#define ll long long
#define db double
#define ull unsigned long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define FR first
#define SE second
using namespace std;
inline int read() {
  int x = 0; bool op = false;
  char c = getchar();
  while(!isdigit(c))op |= (c == '-'), c = getchar();
  while(isdigit(c))x = (x << 1) + (x << 3) + (c ^ 48), c = getchar();
  return op ? -x : x;
}
const int N = 2e5 + 10;
const int P = 998244353;
void add(int &a, int b) {a += b; a >= P ? a -= P : 0;}
void sub(int &a, int b) {a -= b; a < 0 ? a += P : 0;}
int n;
int a[N], cnt[N], f[N], d[N];
int solve(int l, int r) {
  for(int i = l; i <= r; i++)a[i - l + 1] = a[i];
  int n = r - l + 1, col = 0, j = 1;
  for(int i = 1; i <= n; i++)f[i] = d[i] = 0;
  f[1] = 1;
  for(int i = 1; i <= n; i++) {
    add(d[i], d[i - 1]); add(f[i], d[i]);
    while(j <= n && col <= 2)col += !cnt[a[j]], cnt[a[j]]++, j++;
    if(col > 2)add(d[j - 1], f[i]);
    if(i < n)add(f[i + 1], f[i]);
    if(i + 2 <= n && a[i + 2] == a[i])add(f[i + 2], f[i]);
    cnt[a[i]]--; col -= !cnt[a[i]];
  }
  return f[n];
}
int main() {
  n = read();
  for(int i = 1; i <= n; i++)a[i] = read();
  int ans = 1;
  for(int i = 1; i <= n; i++) {
    int k = i;
    while(k < n && a[k + 1] != a[k])k++;
    ans = 1ll * ans * solve(i, k) % P; i = k;
  }
  printf("%d\n", ans);
  return 0;
}

Submission Info

Submission Time
Task D - Neq Neq
User thebighead
Language C++ 20 (gcc 12.2)
Score 700
Code Size 1439 Byte
Status AC
Exec Time 8 ms
Memory 6892 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 700 / 700
Status
AC × 4
AC × 51
Set Name Test Cases
Sample 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt
All 00-sample-001.txt, 00-sample-002.txt, 00-sample-003.txt, 00-sample-004.txt, 01-001.txt, 01-002.txt, 01-003.txt, 01-004.txt, 01-005.txt, 01-006.txt, 01-007.txt, 01-008.txt, 01-009.txt, 01-010.txt, 01-011.txt, 01-012.txt, 01-013.txt, 01-014.txt, 01-015.txt, 01-016.txt, 01-017.txt, 01-018.txt, 01-019.txt, 01-020.txt, 01-021.txt, 01-022.txt, 01-023.txt, 01-024.txt, 01-025.txt, 01-026.txt, 01-027.txt, 01-028.txt, 01-029.txt, 01-030.txt, 01-031.txt, 01-032.txt, 01-033.txt, 01-034.txt, 01-035.txt, 01-036.txt, 01-037.txt, 01-038.txt, 01-039.txt, 01-040.txt, 01-041.txt, 01-042.txt, 01-043.txt, 01-044.txt, 01-045.txt, 01-046.txt, 01-047.txt
Case Name Status Exec Time Memory
00-sample-001.txt AC 1 ms 3656 KiB
00-sample-002.txt AC 1 ms 3684 KiB
00-sample-003.txt AC 1 ms 3808 KiB
00-sample-004.txt AC 1 ms 3676 KiB
01-001.txt AC 1 ms 3816 KiB
01-002.txt AC 5 ms 5608 KiB
01-003.txt AC 6 ms 5788 KiB
01-004.txt AC 7 ms 5800 KiB
01-005.txt AC 3 ms 4628 KiB
01-006.txt AC 5 ms 5788 KiB
01-007.txt AC 6 ms 6100 KiB
01-008.txt AC 2 ms 4196 KiB
01-009.txt AC 2 ms 4252 KiB
01-010.txt AC 3 ms 4884 KiB
01-011.txt AC 2 ms 4596 KiB
01-012.txt AC 3 ms 4836 KiB
01-013.txt AC 6 ms 6048 KiB
01-014.txt AC 3 ms 4424 KiB
01-015.txt AC 5 ms 4164 KiB
01-016.txt AC 2 ms 3920 KiB
01-017.txt AC 4 ms 4080 KiB
01-018.txt AC 4 ms 4156 KiB
01-019.txt AC 5 ms 4152 KiB
01-020.txt AC 5 ms 4424 KiB
01-021.txt AC 4 ms 4504 KiB
01-022.txt AC 3 ms 4740 KiB
01-023.txt AC 2 ms 4296 KiB
01-024.txt AC 3 ms 4796 KiB
01-025.txt AC 6 ms 5944 KiB
01-026.txt AC 8 ms 5984 KiB
01-027.txt AC 7 ms 6024 KiB
01-028.txt AC 7 ms 6016 KiB
01-029.txt AC 7 ms 6336 KiB
01-030.txt AC 8 ms 6688 KiB
01-031.txt AC 8 ms 6788 KiB
01-032.txt AC 6 ms 6116 KiB
01-033.txt AC 6 ms 5968 KiB
01-034.txt AC 7 ms 6296 KiB
01-035.txt AC 7 ms 6788 KiB
01-036.txt AC 6 ms 5940 KiB
01-037.txt AC 6 ms 5944 KiB
01-038.txt AC 7 ms 4380 KiB
01-039.txt AC 8 ms 4564 KiB
01-040.txt AC 7 ms 4392 KiB
01-041.txt AC 7 ms 4552 KiB
01-042.txt AC 7 ms 4436 KiB
01-043.txt AC 7 ms 4660 KiB
01-044.txt AC 7 ms 5172 KiB
01-045.txt AC 8 ms 6892 KiB
01-046.txt AC 6 ms 5784 KiB
01-047.txt AC 6 ms 5804 KiB