結果

問題 No.511 落ちゲー 〜手作業のぬくもり〜
ユーザー vjudge1
提出日時 2025-02-22 20:55:31
言語 C++17
(gcc 13.3.0 + boost 1.87.0)
結果
WA  
実行時間 -
コード長 1,303 bytes
コンパイル時間 2,305 ms
コンパイル使用メモリ 200,856 KB
実行使用メモリ 12,800 KB
最終ジャッジ日時 2025-02-22 20:55:37
合計ジャッジ時間 5,755 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample WA * 5
other WA * 32
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;
const int N = 1e5 + 5;
typedef long long ll;

struct BIT {
	int N;
	vector<ll> tr;
	BIT(int len) {
		N = len;
		tr.assign(len + 5, 0);
	}
	int lowbit(int x) {
		return x & -x;
	}
	void add(int x, ll v) {
		for (int i = x; i <= N; i += lowbit(i)) 
			tr[i] += v;
	}
	ll sum(int x) {
		ll ret = 0;
		for (int i = x; i; i -= lowbit(i))
			ret += tr[i];
		return ret;
	}
};

typedef pair<int, ll> pii;
int n, w;
ll h;
int a[N], b[N], x[N];

int main(){
  	cin >> n >> w >> h;
  	for (int i = 1; i <= n; i++)
    	cin >> a[i] >> b[i] >> x[i];
  	vector<vector<pii> > add(w + 5);
  	for (int i = 1; i <= n; i++){
    	add[x[i]].push_back(make_pair(i, b[i]));
    	add[x[i] + a[i]].push_back(make_pair(i, -b[i]));
  	}
  	ll A = 0, B = 0;
  	BIT bit(n);
  	for (int i = 1; i <= w; i++) {
    	for (auto P: add[i])
      		bit.add(P.first, P.second);
   		int l = 0, r = n + 1; 
    	while (r - l > 1) {
      		int mid = (r + l) / 2;
      		if (bit.sum(mid) >= h)
        		r = mid;
      		else 
        		l = mid;
    	}
    	if (r != n + 1) {
      		if (r % 2 == 1)
        		A++;
      		else
        		B++;
    	}
  	}
  	if (A > B)
  		puts("A");
  	else if (A < B)
  		puts("B");
  	else
  		puts("DRAW");
  	cout << A << ' ' << B << endl;
  	return 0;
}
0