如何建設網(wǎng)站的管理平臺免費網(wǎng)站seo
題目描述
小明維護著一個程序員論壇。現(xiàn)在他收集了一份“點贊”日志,日志共有 N 行。其中每一行的格式是 ts id,表示在 ts 時刻編號 id 的帖子收到一個“贊”。
現(xiàn)在小明想統(tǒng)計有哪些帖子曾經(jīng)是“熱帖”。如果一個帖子曾在任意一個長度為 DD 的時間段內(nèi)收到不少于 K 個贊,小明就認為這個帖子曾是“熱帖”。
具體來說,如果存在某個時刻 TT滿足該帖在 [T,T+D) 這段時間內(nèi)(注意是左閉右開區(qū)間)收到不少于 K 個贊,該帖就曾是“熱帖”。
給定日志,請你幫助小明統(tǒng)計出所有曾是“熱帖”的帖子編號。
輸入格式
第一行包含三個整數(shù) N、DD和 K。
以下 N 行每行一條日志,包含兩個整數(shù) ts 和 id。
輸出格式
按從小到大的順序輸出熱帖 id。每個 id一行。
輸入輸出樣例
輸入
7 10 2
0 1
0 10
10 10
10 1
9 1
100 3
100 3
輸出
1
3
說明/提示
對于 50% 的數(shù)據(jù),1≤K≤N≤1000。
對于 100% 的數(shù)據(jù), 10^51≤K≤N≤10^5, 0≤id,ts≤10^5。
時限 1 秒, 256M。藍橋杯 2018 年第九屆省賽
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#define x first
#define y second
using namespace std;
typedef pair<int, int> PII;
const int N = 100010;
int n, d, k;
PII logs[N];
int cnt[N];
bool st[N]; //記錄每個帖子是否是熱貼
int main()
{scanf("%d %d %d", &n, &d, &k);for (int i = 0; i < n; i++){scanf("%d %d", &logs[i].x, &logs[i].y);}sort(logs, logs + n);for (int i = 0, j = 0; i < n; i++){int id = logs[i].y;cnt[id]++;while (logs[i].x - logs[j].x >= d){cnt[logs[j].y]--;j++;}if (cnt[id] >= k) st[id] = true;}for (int i = 0; i <= 100000; i++){if (st[i]){cout << i << endl;}}return 0;
}