[蓝桥杯][2018年第九届真题]日志统计

通过双指针维护([T_i,T_i+D))这段时间窗口内,每个日志出现的次数。

const int N=1e5+10;
PII a[N];
int cnt[N];
int n,d,k;

int main()
{
    cin>>n>>d>>k;

    for(int i=0;i<n;i++)
        cin>>a[i].fi>>a[i].se;
    sort(a,a+n);

    int l=0,r=0;
    set<int> res;
    while(r<n)
    {
        while(r<n && a[r].fi - a[l].fi < d)
        {
            int id=a[r].se;
            cnt[id]++;
            if(cnt[id] >= k) 
                res.insert(id);
            r++;
        }
        
        int id=a[l].se;
        cnt[id]--;
        l++;
    }
    
    for(auto t:res)
        printf("%d
",t);
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14589425.html