Tin bữa nay ghê quá :) nay lại có hứng đặt câu :) Tên bài: TWICE SPyofgame đang thực hiện một thử thách: đạt được mức Expert codeforces trong 1 tháng hoặc mất 50k. Trong lúc luyện tập, anh ấy gặp một bài toán. Cho mảng A gồm N phần tử, phần tử thứ i có giá trị A[i]. Có Q truy vấn, mỗi truy vấn gồm hai số nguyên L và R. Câu trả lời cho truy vấn này là có bao nhiêu giá trị khác nhau xuất hiện chính xác 2 lần trong đoạn [L;R] đó INPUT Dòng thứ nhất chứa hai số nguyên N,Q (1≤N,Q≤500000) Dòng thứ hai là các số nguyên A[i] (A[i]≤1000000000) Q dòng tiếp theo, mỗi dòng chứa hai số nguyên dương L,R (1≤L≤R≤N) OUTPUT: Gồm Q dòng, mỗi dòng là câu trả lời của từng truy vấn Ví Dụ: INPUT: 5 1 1 2 1 1 1 1 3 OUTPUT: 1 - Ngôn ngữ: tùy ý :) (Khuyên dùng c++) - Muốn submit thì lên mạng tìm nha :(( (Copy đề để tìm)
1 câu trả lời
*CODE PYTHON
n,q=map(int,input().split())
a=list(map(int,input().split()))
for k in range (q):
r,l=map(int,input().split())
b=list(a[r-1:l])
b.sort()
s=[1]*len(b)
for i in range (1,len(b)):
if (b[i]==b[i-1]):
s[i]=s[i-1]+1
dem=0
for i in range (len(s)):
if (s[i]==2):
dem+=1
print(dem)
*Bạn dùng thử nha, mình không biết cắt mảng trong C++ (đúng hơn là chưa học hàm gì :v)
*Code này sẽ nhanh hơn code trên (nhưng còn bị time limit không thì chịu)
n,q=map(int,input().split())
a=list(map(int,input().split()))
for k in range (q):
r,l=map(int,input().split())
b=list(a[r-1:l])
c=list(set(b))
s=[0]*len(c)
for i in range (len(c)):
s[i]=b.count(c[i])
dem=s.count(2)
print(dem)