# Escalator Conversations ## [題目連結](https://codeforces.com/contest/1851/problem/A) ## 解題想法 * 將所有人由小到大排列,逐一比對 * 固定被比對者的高度(台階),將台階差反應在用於比對的值,例:相對低一階的高度為[身高-一階的高度] * 將用於比對的值隨著被比對者的身高修正 ## 遭遇到的困難 * 比對和修正高度的程式花了一些時間想和修改 ## 花費的時間:30分鐘 ## 程式碼 ```cpp=01 #include<cstdio> #include<algorithm> using namespace std; int main(){ int t,k; scanf("%d",&t); for(k=0;k<t;k++){ int n,m,k,h,ans=0,i=0; scanf("%d%d%d%d",&n,&m,&k,&h); int p[n]; for(i=0;i<n;i++)scanf("%d",&p[i]); sort(p,p+n); int a=h-k*(m-1),b=h+k*(m-1); while(i!=n&&a<=b){ if(a==h)a+=k; else if(p[i]==a){ ans++; i++; } else if(p[i]<a)i++; else a+=k; } printf("%d\n",ans); } return 0; }