結果
| 問題 |
No.2803 Bocching Star
|
| コンテスト | |
| ユーザー |
gyozasukisuki
|
| 提出日時 | 2024-07-12 22:33:23 |
| 言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 3,920 bytes |
| コンパイル時間 | 2,782 ms |
| コンパイル使用メモリ | 211,240 KB |
| 最終ジャッジ日時 | 2025-02-22 04:34:03 |
|
ジャッジサーバーID (参考情報) |
judge3 / judge6 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 33 WA * 2 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
// #include <atcoder/all>
// using namespace atcoder;
const int INF = 1e9;
using ll = long long;
using ull = unsigned long long;
using ullv = vector<ull>;
using inv = vector<int>;
using stv = vector<string>;
using llv = vector<ll>;
using ld = long double;
using pint = pair<int,int>;
#define FOR(i,l,r) for(int i=(int)(l); i<(int)(r); i++)
#define rep(i,r) for(ll i=0; i<(ll)(r); i++)
#define repl(i,r) for(long long i=0; i<(long long)(r); i++)
#define FORl(i,l,r) for(long long i=(long long)(l); i<(long long)(r); i++)
#define INFL (long long)((1LL<<62)-(1LL<<31))
#define pb(x) push_back(x)
#define printVec(x) for(auto s:x) cout << s << " "; cout << endl
#define ALL(x) x.begin(),x.end()
template <typename T>
bool chmax(T &a, const T& b) {
if (a < b) {
a = b; // aをbで更新
return true;
}
return false;
}
// aよりもbが小さいならばaをbで更新する
// (更新されたならばtrueを返す)
template <typename T>
bool chmin(T &a, const T& b) {
if (a > b) {
a = b; // aをbで更新
return true;
}
return false;
}
ll floor(ll N, ll d){
if(d < 0)
N *= -1, d *= -1;
if(N > 0)
return N / d;
else
return (N+1) / d-1;
}
ll ceil(ll N, ll d)
{
if(d < 0)
N *= -1, d *= -1;
if(N > 0)
return (N - 1) / d + 1;
else
return N / d;
}
long long pow(long long x, long long n) {
long long ret = 1;
while (n > 0) {
if (n & 1) ret *= x; // n の最下位bitが 1 ならば x^(2^i) をかける
x *= x;
n >>= 1; // n を1bit 左にずらす
}
return ret;
}
long long modpow(long long a, long long n, long long mod) {
long long res = 1;
while (n > 0) {
if (n & 1) res = res * a % mod;
a = a * a % mod;
n >>= 1;
}
return res;
}
//拡張ユークリッド互除法
long long int ext_gcd(long long int a, long long int b, long long int &x, long long int &y)
{
if (b == 0)
{
x = 1;
y = 0;
return a;
}
long long int q = a / b;
long long int g = ext_gcd(b, a-q*b, x, y);
long long int z = x-q*y;
x = y;
y = z;
return g;
}
//aとmは互いに素, a^(-1) mod m
long long int modinv(long long int a, long long int m)
{
long long int x, y;
ext_gcd(a, m, x, y);
x %= m;
if (x < 0)
x += m;
return x;
}
ll takemod(ll x,ll m){
ll num = x;
num %= m;
if (num < 0)
num += m;
return num;
}
const ll MOD = 998244353LL;
ll N;
string S,T;
ll convert(string s){
reverse(ALL(s));
ll res = 0;
rep(i,s.size()){
if(s[i] == 'B'){
res += (1LL << i);
}
}
return res;
}
string binary(ll bina){
string ans = "";
for (int i = 0; bina>0 ; i++)
{
if(bina%2) ans.pb('1');
else ans.pb('0');
bina = bina/2;
}
reverse(ALL(ans));
return ans;
}
string contos(ll n){
string ns = binary(n);
string ans = "";
for (int i = 0; n>0 ; i++)
{
if(n%2) ans.pb('B');
else ans.pb('W');
n= n/2;
}
rep(i,N-ns.size()+2) ans.pb('W');
reverse(ALL(ans));
return ans;
}
int main(){
std::ios::sync_with_stdio(false);
cin.tie(nullptr);
// cout << fixed << setprecision(15);
ll N,S;
cin >> N >> S;
llv P(N);
rep(i,N) cin >> P[i];
llv A(P);
unordered_map<ll,ll> mp;
rep(i,N) mp[P[i]] = mp[P[i]] +1LL;
sort(ALL(P));
P.erase(unique(ALL(P)),P.end());
llv ans;
rep(i,N){
bool ok = true;
if(mp[P[i]] > 1) ok = false;
if(i+1 < N){
if(P[i+1]-P[i] <= S) ok =false;
}
if(i-1 >= 0){
if(P[i]-P[i-1] <= S) ok = false;
}
if(ok){
rep(j,mp[P[i]]) ans.pb(P[i]);
}
}
// cout<< ans.size() << endl;
// printVec(ans);
llv idxs;
ll idx = 0;
rep(i,N){
if(binary_search(ALL(ans),A[i])){
idxs.pb(i+1);
idx++;
}
}
cout << idxs.size() << endl;
printVec(idxs);
}
gyozasukisuki