Submission #923343

#TimeUsernameProblemLanguageResultExecution timeMemory
923343Amirreza_FakhriExamination (JOI19_examination)C++17
100 / 100
395 ms26944 KiB
// In the name of the God #include <bits/stdc++.h> #define ll long long // #define int long long #define pb push_back #define F first #define S second #define mp make_pair #define pii pair <int, int> #define smin(x, y) (x) = min((x), (y)) #define smax(x, y) (x) = max((x), (y)) #define all(x) (x).begin(), (x).end() using namespace std; const int inf = 1e9+7; const int mod = 998244353; const int maxn = 1e5+5; int n, q, ans[maxn]; vector <vector <int> > fen[2]; vector <int> a; vector <pair <int, pii> > vec; vector <pair <pii, pii> > qs; void upd3(int i, int j) { // cout << i << ' ' << j << ' ' << fen[0][i-1].size() << '\n'; for (j = fen[0][i-1].size()-j; j <= fen[0][i-1].size(); j += j&-j) { // assert(j < 0); fen[1][i-1][j-1]++; } } void upd1(int i, int x) { for (i = fen[0].size()-i; i <= fen[0].size(); i += i&-i) fen[0][i-1].pb(x); } void upd2(int i, int x) { // cout << x << "DD\n"; for (i = fen[0].size()-i; i <= fen[0].size(); i += i&-i) { int j = lower_bound(all(fen[0][i-1]), x)-fen[0][i-1].begin(); upd3(i, j); } } int get1(int i, int j) { int ans = 0; for (j = fen[0][i-1].size()-j; j; j -= j&-j) ans += fen[1][i-1][j-1]; return ans; } int get(int i, int x) { int ans = 0; for (i = fen[0].size()-i; i; i -= i&-i) { int j = lower_bound(all(fen[0][i-1]), x)-fen[0][i-1].begin(); ans += get1(i, j); } return ans; } int32_t main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n >> q; for (int i = 0; i < n; i++) { int s, t; cin >> s >> t; a.pb(s); vec.pb(mp(s+t, mp(s, t))); } sort(all(a)), sort(all(vec)); a.resize(unique(all(a))-a.begin()); fen[0].resize(a.size()); fen[1].resize(a.size()); for (int i = 0; i < n; i++) { int j = lower_bound(all(a), vec[i].S.F)-a.begin(); upd1(j, vec[i].S.S); } for (int i = 0; i < fen[0].size(); i++) { sort(all(fen[0][i])); fen[0][i].resize(unique(all(fen[0][i]))-fen[0][i].begin()); fen[1][i].resize(fen[0][i].size()); } for (int i = 0; i < q; i++) { int x, y, z; cin >> x >> y >> z; qs.pb(mp(mp(z, x), mp(y, i))); } sort(all(qs)); for (int i = q-1; i >= 0; i--) { while (vec.size() and vec.back().F >= qs[i].F.F) { int j = lower_bound(all(a), vec.back().S.F)-a.begin(); upd2(j, vec.back().S.S); vec.pop_back(); } int j = lower_bound(all(a), qs[i].F.S)-a.begin(); ans[qs[i].S.S] = get(j, qs[i].S.F); } for (int i = 0; i < q; i++) cout << ans[i] << '\n'; return 0; }

Compilation message (stderr)

examination.cpp: In function 'void upd3(int, int)':
examination.cpp:27:38: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   27 |     for (j = fen[0][i-1].size()-j; j <= fen[0][i-1].size(); j += j&-j) {
      |                                    ~~^~~~~~~~~~~~~~~~~~~~~
examination.cpp: In function 'void upd1(int, int)':
examination.cpp:34:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |     for (i = fen[0].size()-i; i <= fen[0].size(); i += i&-i) fen[0][i-1].pb(x);
      |                               ~~^~~~~~~~~~~~~~~~
examination.cpp: In function 'void upd2(int, int)':
examination.cpp:38:33: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     for (i = fen[0].size()-i; i <= fen[0].size(); i += i&-i) {
      |                               ~~^~~~~~~~~~~~~~~~
examination.cpp: In function 'int32_t main()':
examination.cpp:75:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::vector<int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   75 |     for (int i = 0; i < fen[0].size(); i++) {
      |                     ~~^~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...