結果

問題 No.2482 Sandglasses
ユーザー Kanten4205
提出日時 2025-07-15 18:28:35
言語 C++14
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 170 ms / 2,000 ms
コード長 2,152 bytes
コンパイル時間 1,454 ms
コンパイル使用メモリ 171,476 KB
実行使用メモリ 8,064 KB
最終ジャッジ日時 2025-07-15 18:28:45
合計ジャッジ時間 8,401 ms
ジャッジサーバーID
(参考情報)
judge3 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 25
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using pll = pair<ll, ll>;
using int128 = __int128;
using State = string::const_iterator;
class ParseError {};
#define rep(i, n) for(ll i = 0; i < (n); i++)
#define reps(i, l, r) for(ll i = (l); i < (r); i++)
#define all(a) (a).begin(), (a).end()
#define rall(a) (a).rbegin(), (a).rend()
#define endl "\n";
const ll INF = LLONG_MAX / 4;
const ld inf = numeric_limits<long double>::max() / (ld)4;
const ll mod1 = 1000000007;
const ll mod2 = 998244353;
const ld pi = 3.1415926535897;
ll dx[8] = {1, 1, 0, -1, -1, -1, 0, 1};
ll dy[8] = {0, -1, -1, -1, 0, 1, 1, 1};
template <typename T>
bool chmax(T &a, const T& b) {
    if (a < b) { a = b; return true; }
    return false;
}
template <typename T>
bool chmin(T &a, const T& b) {
    if (a > b) { a = b; return true; }
    return false;
}
void solve(){
    ll N, K, T; cin >> N >> K >> T;
    vector<char> a(N);
    rep(i, N) cin >> a[i];
    vector<ll> b(N);
    rep(i, N) cin >> b[i];
    vector<ll>idx(N);
    rep(i, N) {
        idx[i] = i;
    }
    sort(all(idx), [&](int i, int j) {return b[i] < b[j];});
    rep(i, N) {
        if (a[i] == 'A') {
            if (b[i] >= T) {
                b[i] -= T;
            }
            else {
                ll tmp = T - b[i];
                if ((tmp / K) % 2 == 0) {
                    b[i] = tmp % K;
                }
                else {
                    b[i] = K - tmp % K;
                }
            }
        }
        else {
            if (K - b[i] >= T) {
                b[i] += T;
            }
            else {
                ll tmp = T - (K - b[i]);
                if ((tmp / K) % 2 == 0) {
                    b[i] = K - (tmp % K);
                }
                else {
                    b[i] = tmp % K;
                }
            }
        }
    }
    sort(all(b));
    vector<ll>ans(N);
    rep(i, N) {
        ans[idx[i]] = b[i];
    }
    rep(i, N) {
        if (i != 0) cout << ' ';
        cout << ans[i] ;
    }
    cout << endl;
}
int main() {
    ll T = 1;
    // cin >> T;
    while (T--) {
        solve();
    }
}
0