제목 설명
올리비에와 눈 라자드 마시는.
두 사람도 $ $ 18 병을 마시고, 올리비에는 마침내 떨어졌다.
올리비에 너무 많이 생산 부작용을 가지고 있기 때문에, 약물 연구 깨어있는 교회를 복용 후, 다음 날 잠을 잘 수 있습니다.
그는 계산의 지루한 방법과 시간을 보냈다하지만 그는 왕자 모든 후, 양을 계산하지 않습니다. 그는이 문제 패싯을 해결 계산합니다 :
그는 제 1 길이의 $ n 개의 $ 배열은 $을 $ 썼다. $ \들의 어레이를 계산 {a_x, a_y \} $이 나쁜 쌍 불리는 경우에만, $ X <Y $으로하고 a_x $ \ 개조 a_y K = $으로 . 그래서 연속 하위 배열은 나쁜 포함하지 않는 얼마나 많은?
입력 형식
선은 두 개의 정수, $ n 개의 $ 및 $ K $가 포함되어 있습니다.
둘째 줄은 $ $ N- 정수를 포함하는 배열은 $ 달러이다.
출력 형식
출력 행은 대답이 포함되어 있습니다.
견본
샘플 입력 :
3 2
5 3 1
샘플 출력 :
4
데이터 범위 및 팁
샘플 설명 :
$ \는 {5,3 \} $ 배열 만 나쁜 쌍이다.
데이터 범위 :
$ 20 \ % $으로 데이터에 대한 $ 1 \ leqslant n 개의 \의 leqslant 100 $.
또 다른 $ (30) \ %의 $ 데이터를 들면, $ K는 = 0 $.
$ 100 \ % $으로 데이터에 대한 $ 1 \ n 개의 leqslant \의 leqslant {10} ^ 5,0 \ leqslant K \ leqslant {10} ^ 5,1 \ leqslant A_I \ leqslant {10} ^ 5 $
문제 해결
그것은 왼쪽 지점, 바로 자신의 합법적 인 간격이 연속 세그먼트를해야 지적하지만 간헐적 수 없다는 것을 발견했다.
그래서 우리는 합법적 인 범위를 보호하기 위해 고려한다.
a_x $ \ 개조 a_y K = $ 即为 $ (a_x-K) \ 개조 a_y = $ 0.
그럼 우리가 할 수있는 품질 요소의 $ a_x-K $ 분해 될 수 있습니다.
시간 복잡도 : $ \ 시타 (N) $.
기대 점수 : $ $ 100 점을.
실제 점수 : $ $ 100 점.
코드 시간
#INCLUDE <비트 / stdc ++ H.>
네임 스페이스를 사용하여 표준;
긴 길이 N, K, ANS;
긴 긴 [100001];
긴 긴 CNT [100001];
INT의 main ()
{
memset 함수 (CNT, 0x3F입니다,는 sizeof (CNT));
scanf와 ( "%의 LLD의 %의 LLD", N, K);
경우 ( "%의 LLD"을, A [I])를 scanf와 (INT I = 1; i가 ++; 나는 <= N);
긴 긴 LFT = N, RHT = N + 1;
대해 INT (I = N, I는, 난 -)
{
경우 (a [I] == K) RHT = 분 (LFT, RHT);
다른
대 (INT의 J = 1; j 개의 * j를 <= A [i]를 -K, J ++)
{
((a [i]를 -K) %의 J)를 계속하는 경우;
만약 (j> K) RHT = 분 (CNT [J], RHT);
경우 ((a [i]를 -K) / J> K) RHT = 분 (CNT [(a [i]를 -K) / J], RHT);
}
경우 (a [I]> K) LFT = 난;
CNT [A [I] = 1;
ANS + = RHT-I;
}
0을 반환;
}
RP의 ++