#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define MAX 100007
using namespace std;
typedef long long LL;
int n,d1,d2;
int a[MAX];
int d[MAX];
LL l[MAX],r[MAX];
int main ( )
{
while ( ~scanf ( "%d%d%d" , &n , &d1 , &d2 ) )
{
for ( int i = 0 ; i < n ; i++ )
scanf ( "%d" , &a[i] );
for ( int i = 1 ; i < n ; i++ )
{
d[i] = a[i]-a[i-1];
l[i] = r[i] = i;
}
l[0] = r[0] = 0;
for ( int i = 1 ; i < n; i++ )
if ( d[i] == d1 ) l[i] = l[i-1];
for ( int i = n-2 ; i >= 0 ; i-- )
if ( d[i+1] == d2 ) r[i] = r[i+1];
LL ans = 0;
if ( d1 == d2 )
{
for ( LL i = 0 ; i < n ; i++ )
ans += (r[i]-i+1LL);
}
else
{
for ( LL i = 0; i < n ; i++ )
ans += (i-l[i]+1LL)*(r[i]-i+1LL);
}
printf ( "%I64d\n" , ans );
}
}
多校第九场 1005 hdu 5400 Arithmetic Sequence ( dp)
最新推荐文章于 2021-06-03 22:35:19 发布