5 2 -2 0 2 0 -2 0 5 2 3 2 3 3 3 3
12 5
此题有个脑洞,长度可以为0,不一定必须存在j。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; #define ll long long #define maxn 100007 int num[maxn]; int lef[maxn]; int rig[maxn]; int main(){ //freopen("in.txt","r",stdin); //freopen("outx.txt","w",stdout); int n,d1,d2; while(scanf("%d%d%d",&n,&d1,&d2)!=EOF){ for(int i = 1;i <= n; i++) scanf("%d",&num[i]); memset(lef,0,sizeof(lef)); memset(rig,0,sizeof(rig)); for(int i = 2;i <= n; i++) if(num[i] - num[i-1] == d1) lef[i] = lef[i-1]+1; for(int i = n-1; i>=1; i--) if(num[i+1]-num[i] == d2) rig[i] = rig[i+1]+1; ll ans = 0 ; if(d1 == d2){ for(int i = 1;i <= n; i++) ans += lef[i]+1; } else { for(int i = 1;i <= n; i++) ans += 1ll*(lef[i]+1)*(rig[i]+1); } cout<<ans<<endl; } return 0; }