Submission #74603810
Source Code Expand
#ifndef ONLINE_JUDGE
#define _GLIBCXX_DEBUG
#endif
#include <bits/stdc++.h>
#include <atcoder/all>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace atcoder;
using namespace __gnu_pbds;
using ll = long long; using mint=modint998244353; using ld = long double;
const ll infl = 1LL << 60;
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
const vector<int> dx = {1, 0, -1, 0}; const vector<int> dy = {0, 1, 0, -1};
template<typename T> using vc = vector<T>; template<typename T> using vvc = vc<vc<T>>; template<typename T> using vvvc = vc<vvc<T>>;
using vi = vc<int>; using vvi = vvc<int>; using vl = vc<ll>; using vvl = vvc<ll>; using vvvl = vvc<vl>; using vvvvl = vvc<vvl>;
using vs = vc<string>; using vvs = vvc<string>; using P = pair<ll, ll>;
#define nrep(i,n) for (ll i = 0; i < (n); ++i)
#define nfor(i,s,n) for(ll i=s;i<n;i++)//i=s,s+1...n-1 ノーマルfor
template<class T> using pq = priority_queue<T, vc<T>>;//★大きい順に取り出す コスト,頂点 bfs系で使う 小さい順じゃないですABC305E
template<class T> using pq_g = priority_queue<T, vc<T>, greater<T>>;//小さい順に取り出す ダイクストラ法で使う
// 単なるcout関数
template<typename T>
void print(const T& n) {
cout << n << "\n";
}
// デバッグ出力ユーティリティ
// 基本型(数値系)
template<typename T, typename = std::enable_if_t<std::is_arithmetic_v<T>>>
void debug_print(const T& v) { cout << v; }
// string
inline void debug_print(const std::string& s) { cout << s; }
inline void debug_print(const char* s) { cout << s; }
// pair
template<typename A, typename B>
void debug_print(const std::pair<A, B>& p) {
cout << "{";
debug_print(p.first);
cout << ", ";
debug_print(p.second);
cout << "}";
}
// queue
template<typename T, typename Cont>
void debug_print(const std::queue<T, Cont>& q) {
auto q2 = q;
cout << "queue[";
while (!q2.empty()) {
debug_print(q2.front());
q2.pop();
if (!q2.empty()) cout << ", ";
}
cout << "]";
}
// stack
template<typename T, typename Cont>
void debug_print(const std::stack<T, Cont>& s) {
auto s2 = s;
cout << "stack[";
std::vector<T> tmp;
while (!s2.empty()) {
tmp.push_back(s2.top());
s2.pop();
}
for (size_t i = 0; i < tmp.size(); ++i) {
debug_print(tmp[i]);
if (i + 1 != tmp.size()) cout << ", ";
}
cout << "]";
}
// priority_queue
template<typename T, typename Cont, typename Comp>
void debug_print(const std::priority_queue<T, Cont, Comp>& pq) {
auto q2 = pq;
cout << "priority_queue[";
std::vector<T> tmp;
while (!q2.empty()) {
tmp.push_back(q2.top());
q2.pop();
}
for (size_t i = 0; i < tmp.size(); ++i) {
debug_print(tmp[i]);
if (i + 1 != tmp.size()) cout << ", ";
}
cout << "]";
}
// イテレータを持つコンテナ(string, queue, stack, priority_queue 以外)
template<typename T>
auto debug_print(const T& c) -> decltype(std::begin(c), void()) {
cout << "[";
auto it = std::begin(c);
while (it != std::end(c)) {
debug_print(*it);
if (++it != std::end(c)) cout << ", ";
}
cout << "]";
}
// デバッグ用のマクロ(変数名と値を一緒に出力)
#ifndef ONLINE_JUDGE
#define DEBUG(...) cerr << #__VA_ARGS__ << " = "; debug_print(__VA_ARGS__); cerr << endl;
#else
#define DEBUG(...)
#endif
// 1次元vector出力関数
template<typename T>
void vc_cout(const vector<T>& v) {
for (size_t i = 0; i < v.size(); ++i) {
cout << v[i];
if (i + 1 != v.size()) cout << " ";
}
cout << "\n";
}
// 2次元vector出力関数
template<typename T>
void vv_cout(const vector<vector<T>>& v) {
for (size_t i = 0; i < v.size(); ++i) {
for (size_t j = 0; j < v[i].size(); ++j) {
cout << v[i][j];
if (j + 1 != v[i].size()) cout << " ";
}
cout << "\n";
}
}
// `vector<string>` 用のオーバーロード: 各文字列をそのまま1行で出力する
void vv_cout(const vector<string>& v) {
for (const auto& s : v) cout << s << "\n";
}
/*
********************************************************** ここまでテンプレ **********************************************************
*/
ll N, M, Q, K;
ll op(ll a, ll b) {
return a + b;
}
ll e() {
return 0;
}
struct Q_str {
ll t, idx, l, r;
bool operator<(const Q_str& other) const {
return t < other.t;
}
};
int main() {
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
cin >> N >> M >> Q >> K;
vc<P> ds(M);
nrep(i, M){
ll d, s;
cin >> s >> d;
ds[i] = {d, s};
}
sort(ds.rbegin(), ds.rend());
queue<P> ds_q;
nrep(i, M) ds_q.push(ds[i]);
vc<Q_str> queries(Q);
nrep(i, Q){
ll l, r, t;
cin >> l >> r >> t;
queries[i] = {t, i, l, r};
}
sort(queries.rbegin(), queries.rend());
vc<ll> ans(Q, 0);
segtree<ll, op, e> seg(N);
nrep(i, Q) {
auto [t, idx, l, r] = queries[i];
while(!ds_q.empty() && ds_q.front().first >= t) {
auto [d, s] = ds_q.front();
ds_q.pop();
seg.set(s-1, seg.get(s-1) + 1);
}
ans[idx] = max(seg.prod(l-1, r) - K, 0LL);
}
nrep(i, Q) print(ans[i]);
}
Submission Info
| Submission Time | |
|---|---|
| Task | E - Library Book Search |
| User | kuruma_zensoku |
| Language | C++23 (GCC 15.2.0) |
| Score | 466 |
| Code Size | 5718 Byte |
| Status | AC |
| Exec Time | 56 ms |
| Memory | 13296 KiB |
Judge Result
| Set Name | Sample | All | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 0 / 0 | 466 / 466 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| Sample | sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt |
| All | sample01.txt, sample02.txt, sample03.txt, sample04.txt, sample05.txt, in01.txt, in02.txt, in03.txt, in04.txt, in05.txt, in06.txt, in07.txt, in08.txt, in09.txt, in10.txt, in11.txt, in12.txt, in13.txt, in14.txt, in15.txt, in16.txt, in17.txt, in18.txt, in19.txt, in20.txt, in21.txt, in22.txt, in23.txt, in24.txt, in25.txt, in26.txt, in27.txt, in28.txt, in29.txt, in30.txt, in31.txt, in32.txt, in33.txt, in34.txt, in35.txt, in36.txt, in37.txt, in38.txt, in39.txt, in40.txt, in41.txt, in42.txt, in43.txt, in44.txt, in45.txt, in46.txt, in47.txt, in48.txt, in49.txt, in50.txt, in51.txt, in52.txt, in53.txt, in54.txt, in55.txt, in56.txt, in57.txt, in58.txt, in59.txt, in60.txt, in61.txt, in62.txt, in63.txt, in64.txt, in65.txt, in66.txt, in67.txt, in68.txt, in69.txt, in70.txt, in71.txt, in72.txt, in73.txt, in74.txt, in75.txt, in76.txt, in77.txt, in78.txt, in79.txt, in80.txt, in81.txt, in82.txt, in83.txt, in84.txt, in85.txt, in86.txt, in87.txt, in88.txt, in89.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| in01.txt | AC | 1 ms | 3520 KiB |
| in02.txt | AC | 1 ms | 3504 KiB |
| in03.txt | AC | 1 ms | 3604 KiB |
| in04.txt | AC | 1 ms | 3520 KiB |
| in05.txt | AC | 1 ms | 3436 KiB |
| in06.txt | AC | 1 ms | 3464 KiB |
| in07.txt | AC | 1 ms | 3604 KiB |
| in08.txt | AC | 1 ms | 3556 KiB |
| in09.txt | AC | 1 ms | 3520 KiB |
| in10.txt | AC | 54 ms | 13104 KiB |
| in11.txt | AC | 54 ms | 13212 KiB |
| in12.txt | AC | 55 ms | 13220 KiB |
| in13.txt | AC | 25 ms | 9452 KiB |
| in14.txt | AC | 52 ms | 13228 KiB |
| in15.txt | AC | 53 ms | 13220 KiB |
| in16.txt | AC | 42 ms | 13184 KiB |
| in17.txt | AC | 41 ms | 13200 KiB |
| in18.txt | AC | 42 ms | 13100 KiB |
| in19.txt | AC | 1 ms | 3436 KiB |
| in20.txt | AC | 48 ms | 13104 KiB |
| in21.txt | AC | 36 ms | 13200 KiB |
| in22.txt | AC | 49 ms | 13104 KiB |
| in23.txt | AC | 44 ms | 13232 KiB |
| in24.txt | AC | 45 ms | 13272 KiB |
| in25.txt | AC | 40 ms | 13176 KiB |
| in26.txt | AC | 41 ms | 13220 KiB |
| in27.txt | AC | 45 ms | 13100 KiB |
| in28.txt | AC | 54 ms | 13220 KiB |
| in29.txt | AC | 42 ms | 13164 KiB |
| in30.txt | AC | 35 ms | 10284 KiB |
| in31.txt | AC | 1 ms | 3552 KiB |
| in32.txt | AC | 1 ms | 3440 KiB |
| in33.txt | AC | 1 ms | 3436 KiB |
| in34.txt | AC | 1 ms | 3680 KiB |
| in35.txt | AC | 1 ms | 3476 KiB |
| in36.txt | AC | 1 ms | 3680 KiB |
| in37.txt | AC | 1 ms | 3436 KiB |
| in38.txt | AC | 1 ms | 3572 KiB |
| in39.txt | AC | 1 ms | 3572 KiB |
| in40.txt | AC | 1 ms | 3620 KiB |
| in41.txt | AC | 56 ms | 13232 KiB |
| in42.txt | AC | 53 ms | 13104 KiB |
| in43.txt | AC | 1 ms | 3520 KiB |
| in44.txt | AC | 1 ms | 3552 KiB |
| in45.txt | AC | 1 ms | 3520 KiB |
| in46.txt | AC | 1 ms | 3424 KiB |
| in47.txt | AC | 1 ms | 3552 KiB |
| in48.txt | AC | 1 ms | 3572 KiB |
| in49.txt | AC | 1 ms | 3520 KiB |
| in50.txt | AC | 46 ms | 13232 KiB |
| in51.txt | AC | 54 ms | 13184 KiB |
| in52.txt | AC | 49 ms | 13140 KiB |
| in53.txt | AC | 50 ms | 13184 KiB |
| in54.txt | AC | 54 ms | 13212 KiB |
| in55.txt | AC | 52 ms | 13228 KiB |
| in56.txt | AC | 47 ms | 11824 KiB |
| in57.txt | AC | 39 ms | 13176 KiB |
| in58.txt | AC | 55 ms | 13104 KiB |
| in59.txt | AC | 52 ms | 13216 KiB |
| in60.txt | AC | 54 ms | 13212 KiB |
| in61.txt | AC | 52 ms | 13100 KiB |
| in62.txt | AC | 55 ms | 13212 KiB |
| in63.txt | AC | 54 ms | 13184 KiB |
| in64.txt | AC | 53 ms | 13164 KiB |
| in65.txt | AC | 54 ms | 13208 KiB |
| in66.txt | AC | 54 ms | 13268 KiB |
| in67.txt | AC | 54 ms | 13296 KiB |
| in68.txt | AC | 1 ms | 3504 KiB |
| in69.txt | AC | 1 ms | 3368 KiB |
| in70.txt | AC | 1 ms | 3368 KiB |
| in71.txt | AC | 1 ms | 3460 KiB |
| in72.txt | AC | 1 ms | 3368 KiB |
| in73.txt | AC | 1 ms | 3504 KiB |
| in74.txt | AC | 12 ms | 9388 KiB |
| in75.txt | AC | 12 ms | 9376 KiB |
| in76.txt | AC | 1 ms | 3572 KiB |
| in77.txt | AC | 1 ms | 3520 KiB |
| in78.txt | AC | 1 ms | 3520 KiB |
| in79.txt | AC | 1 ms | 3408 KiB |
| in80.txt | AC | 36 ms | 13184 KiB |
| in81.txt | AC | 33 ms | 13220 KiB |
| in82.txt | AC | 1 ms | 3552 KiB |
| in83.txt | AC | 1 ms | 3552 KiB |
| in84.txt | AC | 1 ms | 3520 KiB |
| in85.txt | AC | 1 ms | 3592 KiB |
| in86.txt | AC | 1 ms | 3520 KiB |
| in87.txt | AC | 1 ms | 3520 KiB |
| in88.txt | AC | 50 ms | 13184 KiB |
| in89.txt | AC | 50 ms | 13220 KiB |
| sample01.txt | AC | 1 ms | 3488 KiB |
| sample02.txt | AC | 1 ms | 3484 KiB |
| sample03.txt | AC | 1 ms | 3424 KiB |
| sample04.txt | AC | 1 ms | 3440 KiB |
| sample05.txt | AC | 1 ms | 3376 KiB |