제출 #988409

#제출 시각아이디문제언어결과실행 시간메모리
988409huutuanPairs (IOI07_pairs)C++14
60 / 100
89 ms9132 KiB
#include<bits/stdc++.h> using namespace std; #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; template<class T> using ordered_set=tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; #define int long long const int N=1e5+10; int b, n, d, m; namespace sub1{ int a[N]; void solve(){ for (int i=1; i<=n; ++i) cin >> a[i]; sort(a+1, a+n+1); int ans=0; for (int i=1, j=1; i<=n; ++i){ while (a[i]-a[j]>d) ++j; ans+=i-j; } cout << ans << '\n'; } } const int inf=1e9; namespace sub2{ pair<int, int> a[N]; void solve(){ for (int i=1; i<=n; ++i){ int x, y; cin >> x >> y; a[i]={x+y, x-y}; } sort(a+1, a+n+1); int ans=0; ordered_set<pair<int, int>> st; for (int i=1, j=1; i<=n; ++i){ while (a[i].first-a[j].first>d){ st.erase({a[j].second, j}); ++j; } ans+=st.order_of_key({a[i].second+d+1, -inf})-st.order_of_key({a[i].second-d, -inf}); st.insert({a[i].second, i}); } cout << ans << '\n'; } } int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> b >> n >> d >> m; if (b==1){ sub1::solve(); } if (b==2){ sub2::solve(); } 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...