Submission #396296

#TimeUsernameProblemLanguageResultExecution timeMemory
396296SortingPairs (IOI07_pairs)C++17
30 / 100
42 ms5872 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; constexpr int N = 1e5 + 3; constexpr int M[3] = {(int)(75e6 + 3), (int)(75e3 + 3), 75}; int b, n, d, m; vector<int> a[N]; ll ans = 0; struct Fenwick{ int a[2 * M[1]]; Fenwick(){} void update(int idx, int val){ for(; idx < 2 * M[1]; idx += idx&-idx) a[idx] += val; } int query(int idx){ int ret = 0; for(; idx >= 1; idx -= idx&-idx) ret += a[idx]; return ret; } int query(int l, int r){ return query(r) - query(l - 1); } } f; void solve_2(){ for(int i = 0; i < n; ++i){ int x = a[i][0], y = a[i][1]; a[i][0] = x - y; a[i][1] = x + y; } sort(a, a + n); int l_ptr = 0, r_ptr = -1; for(int i = 0; i < n; ++i){ while(a[l_ptr][0] < a[i][0] - d){ f.update(a[l_ptr][1], -1); ++l_ptr; } while(r_ptr != n - 1 && a[r_ptr + 1][0] <= a[i][0] + d){ ++r_ptr; f.update(a[r_ptr][1], 1); } ans += f.query(max(a[i][1] - d, 1), a[i][1] + d) - 1; } ans >>= 1; } void solve_1(){ sort(a, a + n); int j = 0; for(int i = 0; i < n; ++i){ while(j != n && a[j][0] <= a[i][0] + d) ++j; ans += j - i - 1; } } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cin >> b >> n >> d >> m; for(int i = 0; i < n; ++i){ a[i].resize(b); for(int j = 0; j < b; ++j) cin >> a[i][j]; } if(b == 1) solve_1(); //else if(b == 2) solve_2(); cout << ans << "\n"; }
#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...