链接:https://ac.nowcoder.com/acm/contest/11223/C 来源:牛客网

题目描述

在写英语作文的时候,两个相同单词靠的太近肯定不好。现在 ZHR 给了你一段nn个单词的英文,问你有多少对相同单词中间间隔的单词数小于等于kk 。

输入描述:

第一行两个整数,为nn 和 kk 。

第二行nn个由仅小写字母组成的单词。每个单词长度小于等于1010 。

输出描述:

一行一个正整数,表示有多少对单词中间间隔的单词数小于等于kk 。 示例1 输入

11 2 i love you you love mi mixue ice cream and tea 输出 复制 2 说明 只有 you 和 love 两个单词间隔的单词数小于等于22

using namespace std;
const int N = 100010;
int n,k;
string s;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>k;
    long long  ans = 0;
    unordered_map<string,vector<int>>p;
    for(int  i=1;i<=n;++i){
        cin>>s;
        auto &v=p[s];
        ans+=v.end()-lower_bound(v.begin(),v.end(),i-k-1);
        v.push_back(i);
    }
    cout<<ans;
}