제출 #631366

#제출 시각아이디문제언어결과실행 시간메모리
631366Spade1Sails (IOI07_sails)C++14
100 / 100
111 ms2596 KiB
#include<bits/stdc++.h> #define pii pair<int, int> #define pll pair<long long, long long> #define ll long long #define ld long double #define st first #define nd second #define pb push_back #define INF INT_MAX using namespace std; const int N = 1e5 + 10; pii s[N]; ll fw[N]; ll get(int i) { ll ret = 0; for (; i > 0; i -= i&-i) { ret += fw[i]; } return ret; } void add(int i, int val) { for (; i < N; i += i&-i) { fw[i] += val; } } int findl(int x) { int l = 1, r = x; ll target = get(x); while (l < r) { int mid = (l+r)/2; if (get(mid) == target) r = mid; else l = mid + 1; } return l; } int findr(int x, int fr) { int l = x, r = fr; ll target = get(x); while (l < r) { int mid = ceil(1.0*(l+r)/2); if (get(mid) == target) l = mid; else r = mid - 1; } return l; } void solve() { int n; cin >> n; for (int i = 1; i <= n; ++i) { cin >> s[i].st >> s[i].nd; } sort(s+1, s+n+1); for (int i = 1; i <= n; ++i) { int l = s[i].st - s[i].nd + 1, r = s[i].st; int lb = findl(l); int rb = findr(l, r); if (l == lb) { add(l, 1); add(r+1, -1); } else { add(rb+1, 1); add(r+1, -1); add(lb, 1); add(lb + (s[i].nd - (r - rb)), -1); } } ll sum = 0; for (int i = 1; i < N; ++i) { ll cur = get(i); sum += cur*(cur-1)/2; } cout << sum << '\n'; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int t = 1; // cin >> t; while (t--) { solve(); } }
#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...