結果
| 問題 |
No.1170 Never Want to Walk
|
| コンテスト | |
| ユーザー |
uzzy
|
| 提出日時 | 2020-09-05 12:58:34 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 155 ms / 2,000 ms |
| コード長 | 1,411 bytes |
| コンパイル時間 | 2,842 ms |
| コンパイル使用メモリ | 197,636 KB |
| 実行使用メモリ | 14,720 KB |
| 最終ジャッジ日時 | 2024-11-28 03:21:49 |
| 合計ジャッジ時間 | 6,922 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 2 |
| other | AC * 37 |
ソースコード
#pragma GCC optimize ("O2")
#pragma GCC target ("avx2")
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, n) for(int i = 0; i < (n); i++)
#define rep1(i, n) for(int i = 1; i <= (n); i++)
#define co(x) cout << (x) << "\n"
#define cosp(x) cout << (x) << " "
#define ce(x) cerr << (x) << "\n"
#define cesp(x) cerr << (x) << " "
#define pb push_back
#define mp make_pair
#define chmin(x, y) x = min(x, y)
#define chmax(x, y) x = max(x, y)
#define Would
#define you
#define please
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int N, A, B;
cin >> N >> A >> B;
set<ll> X;
rep1(i, N) {
ll x;
cin >> x;
X.insert((x << 30) + i);
}
int ma = (1 << 30) - 1;
int kotae[200001];
while (X.size()) {
queue<ll> q;
int k = 0;
vector<int> v;
auto tmp = *X.begin();
X.erase(tmp);
q.push(tmp);
while (q.size()) {
auto tmp = q.front();
q.pop();
ll x = tmp >> 30;
int i = tmp & ma;
k++;
v.pb(i);
auto l = X.lower_bound(x - B << 30);
auto r = X.lower_bound(x - A + 1 << 30);
while (l != r) {
q.push(*l);
l++;
}
X.erase(X.lower_bound(x - B << 30), r);
l = X.lower_bound(x + A << 30);
r = X.lower_bound(x + B + 1 << 30);
while (l != r) {
q.push(*l);
l++;
}
X.erase(X.lower_bound(x + A << 30), r);
}
for (auto j : v) kotae[j] = k;
}
rep1(i, N) co(kotae[i]);
Would you please return 0;
}
uzzy