Submission #1176593

#TimeUsernameProblemLanguageResultExecution timeMemory
1176593sanoPairs (IOI07_pairs)C++20
30 / 100
254 ms138908 KiB
#include<iostream> #include<vector> #include<queue> #include<deque> #include<string> #include<fstream> #include<algorithm> #include <iomanip> #include<map> #include <set> #include <unordered_map> #include <stack> #include <unordered_set> #include <cmath> #include <cstdint> #include <cassert> #define shit short int #define ll long long //#define int ll #define For(i, n) for(int i = 0; i < (int)n; i++) #define ffor(i, a, n) for(int i = (int)a; i < (int)n; i++) #define rfor(i, n) for(int i = (int)n; i >= (int)0; i--) #define rffor(i, a, n) for(int i = (int)n; i >= (int)a; i--) #define vec vector #define ff first #define ss second #define pb push_back #define pii pair<int, int> #define NEK 2000000000 #define mod 1000000007 #define mod2 1000000009 #define rsz resize #define prv1 43 #define prv2 47 #define D 8 #define trav(a,x) for (auto& a: x) #define pb push_back #define ub upper_bound #define lb lower_bound #define all(x) (x).begin(), (x).end() #define sig 0.0000001 using namespace std; class intervalac { int n; struct node { int in = 0; int lp = 0; node* left = nullptr; node* right = nullptr; }; node* root = new node; void apply(node* s, int l, int r, int x) { s->in += (r - l + 1) * x; s->lp += x; return; } void propagate(node* s, int l, int r) { if (s->left == nullptr) s->left = new node; if (s->right == nullptr) s->right = new node; int m = (l + r) / 2; apply(s->left, l, m, s->lp); apply(s->right, m + 1, r, s->lp); s->lp = 0; } void zmen(node* s, int l, int r, int a, int b, int k) { if (l > b || r < a) return; if (a <= l && r <= b) { s->in += k * (r - l + 1); s->lp += k; return; } propagate(s, l, r); int m = (l + r) / 2; zmen(s->left, l, m, a, b, k), zmen(s->right, m + 1, r, a, b, k); s->in = s->left->in + s->right->in; return; } int daj(node* s, int l, int r, int a, int b) { if (l > b || r < a) return 0; if (a <= l && r <= b) return s->in; propagate(s, l, r); int m = (l + r) / 2; return daj(s->left, l, m, a, b) + daj(s->right, m + 1, r, a, b); } public: intervalac(int vel) { n = vel; return; } void zmen(int a, int b, int k) { zmen(root, 0, n - 1, a, b, k); return; } int daj(int a, int b) { return daj(root, 0, n - 1, a, b); } }; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int tt; cin >> tt; if (tt == 1) { int n, d, m; cin >> n >> d >> m; vec<int> p(n); For(i, n) cin >> p[i]; intervalac seg(m+1); ll vys = 0; For(i, n) { seg.zmen(p[i], p[i], 1); vys += (seg.daj(p[i] - d, p[i] + d) - 1); } cout << vys << '\n'; return 0; } if(tt == 2){ } if (tt == 3) { } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...