- 0310caojiayi 的博客
对称二叉树
- @ 2026-4-23 19:29:31
#include<bits/stdc++.h> using namespace std; int n,m; int a[1000005]; map<int,int> d; int ans; int main() { scanf("%d%d",&n,&m); for(int i=1; i<=n; i++) { scanf("%d",&a[i]); d[a[i]]++; } sort(a+1,a+n+1); int s1=a[1]; int w=1,w1=1; while(s1!=a[n]) { // if(w>a[w1]) s1=a[w]; if(d[s1](a[w+d[s1]]-s1)>=m) w+=m,w1+=d[s1]; /2 2 2 5 6 7/ else ans+=d[s1](a[w+d[s1]-s1]),d[a[w+d[s1]]]+=d[s1],w=a[w+d[s1]],w1+=d[w]; } cout<<ans; }