답안 #198623

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
198623 2020-01-27T00:59:48 Z MetB Sails (IOI07_sails) C++14
0 / 100
120 ms 2268 KB
#include <bits/stdc++.h>
 
#define N 1000001
 
using namespace std;
 
typedef long long ll;
 
const ll INF = 1e18, MOD = 1e9 + 7, MOD2 = 1e6 + 3;

ll n, m;

struct BIT {
	ll t[N];

	void update (int l, int r) {
		if (l > r) return;
		r++;
		for (; r <= m; r = (r | (r + 1)))
			t[r]--;
		for (; l <= m; l = (l | (l + 1)))
			t[l]++;
	}

	ll get (ll x) {
		ll sum = 0;
		for (; x >= 0; x = (x & (x + 1)) - 1)
			sum += t[x];
		return sum;
	}

	ll upper_bound (ll x) {
		int l = 0, r = m - 1;
		if (get (r) < x) return r + 1;

		while (l < r) {
			int mid = (l + r) / 2;
			if (get (mid) < x) l = mid + 1;
			else r = mid;
		}

		return l;
	}
} t;
pair <ll, ll> a[N];

int main () {
	cin >> n;

	for (ll i = 0; i < n; i++) {
		cin >> a[i].first >> a[i].second;
		m = max (m, a[i].first);
	}

	sort (a, a + n);

	for (ll i = 0; i < n; i++) {
		ll h, k; 
		tie (h, k) = a[i];

		int x = t.get (h - k);
		int l = t.upper_bound (x);
		int r = min (h, t.upper_bound (x + 1) - 1);
		if (r < h) t.update (r + 1, h);
		int p = k - (h - r);
		t.update (l, l + p - 1);
	}

	ll sum = 0;

	for (ll i = 0; i <= m; i++) {
		ll x = t.get (i);
		sum += x * (x - 1) / 2;
	}

	cout << sum;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 256 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 5 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 7 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 13 ms 632 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 35 ms 760 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 66 ms 1504 KB Output isn't correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 90 ms 1872 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 95 ms 1784 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 120 ms 2268 KB Output isn't correct
2 Halted 0 ms 0 KB -