diff options
| author | crupest <crupest@outlook.com> | 2021-03-21 23:03:47 +0800 | 
|---|---|---|
| committer | crupest <crupest@outlook.com> | 2021-03-21 23:03:47 +0800 | 
| commit | 07f1e4daea1308562c2b87a7e408bc5688684ba8 (patch) | |
| tree | 6c7ac8b56972b1540558c91a5055dbfc1dac6d86 /works/solutions/acwing | |
| parent | 06de1eef6da62307ce23cf0a4cf6713c18348148 (diff) | |
| download | crupest-07f1e4daea1308562c2b87a7e408bc5688684ba8.tar.gz crupest-07f1e4daea1308562c2b87a7e408bc5688684ba8.tar.bz2 crupest-07f1e4daea1308562c2b87a7e408bc5688684ba8.zip | |
import(solutions): Add acwing 1238.
Diffstat (limited to 'works/solutions/acwing')
| -rw-r--r-- | works/solutions/acwing/1238.cpp | 56 | 
1 files changed, 56 insertions, 0 deletions
| diff --git a/works/solutions/acwing/1238.cpp b/works/solutions/acwing/1238.cpp new file mode 100644 index 0000000..2c9d899 --- /dev/null +++ b/works/solutions/acwing/1238.cpp @@ -0,0 +1,56 @@ +#include <iostream>
 +#include <map>
 +#include <set>
 +
 +const int M = 100010;
 +
 +int N, D, K;
 +
 +std::map<int, std::multiset<int>> vote_map;
 +
 +bool check(const std::multiset<int> &v) {
 +  auto iter1 = v.cbegin();
 +  auto iter2 = v.cbegin();
 +
 +  const auto end = v.cend();
 +
 +  int count = 1;
 +
 +  while (iter2 != end) {
 +    while (*iter2 - *iter1 >= D) {
 +      ++iter1;
 +      count--;
 +    }
 +
 +    if (count >= K)
 +      return true;
 +
 +    ++iter2;
 +    count++;
 +  }
 +
 +  return false;
 +}
 +
 +int main() {
 +  std::ios_base::sync_with_stdio(false);
 +  std::cin.tie(nullptr);
 +
 +  std::cin >> N >> D >> K;
 +
 +  for (int i = 1; i <= N; i++) {
 +    int ts, id;
 +    std::cin >> ts >> id;
 +    vote_map[id].insert(ts);
 +  }
 +
 +  int result;
 +
 +  for (const auto &vote : vote_map) {
 +    if (check(vote.second)) {
 +      std::cout << vote.first << "\n";
 +    }
 +  }
 +
 +  return 0;
 +}
 | 
