提出 #72893517


ソースコード 拡げる

#include <bits/stdc++.h>
#define rep(i, s, e) for (ll i = (ll)(s); i < (ll)(e); ++i)
#define rrep(i, s ,e) for (ll i = (ll)(s); i > (ll)(e); --i)
using namespace std;
typedef long long ll;
const ll INF = 1LL << 60;
const ll MOD = 998244353;
//const ll MOD = 1000000007;

template <typename T>
struct SegmentTree {
private:
    int n;
    vector<T> node;
    T e = 0;//単位元
public:
    SegmentTree(vector<T> v) {
        ll sz = (ll)v.size();
        n = 1; while(n < sz) n *= 2;
        node.resize(2*n-1, e);

        for(ll i=0; i<sz; i++) node[i+n-1] = v[i];
        for(ll i=n-2; i>=0; i--) node[i] = merge(node[i*2+1],node[i*2+2]);
    }

    T merge(T a,T b){
        //
    }
    void update(ll k, T val) {
        k += (n - 1);
        node[k] = val;


        while(k > 0) {
            k = (k - 1) / 2;
            node[k] = merge(node[2*k+1],node[2*k+2]);
        }
    }

    T query(ll a, ll b, ll k=0, ll l=0, ll r=-1) {
        if(r < 0) r = n;
        if(b <= l || r <= a) return e;
        if(a <= l && r <= b) return node[k];

        T vl = query(a, b, 2*k+1, l, (l+r)/2);
        T vr = query(a, b, 2*k+2, (l+r)/2, r);
        return merge(vl,vr);
    }
 T operator[](ll at){
        at += n-1;
        return node[at];
    }


};


void solve(){
    ll ans = 0;
    ll n;cin >> n;
    vector<ll> v(n);
    vector<ll> c(n);
    rep(i,0,n)cin >> v[i];
    vector<pair<ll,ll>> a(n);
    rep(i,0,n)a[i] = {v[i],i};
    sort(a.begin(),a.end());
    set<ll> st;
    st.insert(-1);
    st.insert(INF);
    c[a[0].second] = a[0].first;
    st.insert(a[0].second);
    rep(i,1,n){
        auto[x,pos] = a[i];
        auto it = st.lower_bound(pos);
        auto it2 = it--;
        ll res = x;
        if(*it != INF){
            ll k = *it;
            res = min(res,c[k]+abs(pos-k));
        }
        if(*it2 != -1 && *it2 != INF){
          //cout << *it2 << endl;
            ll k = *it2;
            res = min(res,c[k]+abs(pos-k));
        }
        c[pos] = res;
        st.insert(pos);
    }
    rep(i,0,n)ans += (v[i]-c[i]);
    //for(auto x:c)cout << x << " ";
    cout << ans << endl;

}
int main(){
    cin.tie(0);cout.tie(0);
    ios_base::sync_with_stdio(false);
    
    ll t;cin >> t;
    while(t--){
        solve();
    }
}

提出情報

提出日時
問題 D - Pawn Line
ユーザ KH8047
言語 C++23 (GCC 15.2.0)
得点 400
コード長 2362 Byte
結果 AC
実行時間 158 ms
メモリ 26952 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 400 / 400
結果
AC × 1
AC × 72
セット名 テストケース
Sample sample_01.txt
All killer_01.txt, killer_02.txt, killer_03.txt, killer_04.txt, killer_05.txt, killer_06.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt
ケース名 結果 実行時間 メモリ
killer_01.txt AC 106 ms 26812 KiB
killer_02.txt AC 104 ms 26792 KiB
killer_03.txt AC 95 ms 26704 KiB
killer_04.txt AC 97 ms 26860 KiB
killer_05.txt AC 105 ms 26704 KiB
killer_06.txt AC 106 ms 26812 KiB
sample_01.txt AC 1 ms 3560 KiB
test_01.txt AC 29 ms 3596 KiB
test_02.txt AC 32 ms 3596 KiB
test_03.txt AC 36 ms 3628 KiB
test_04.txt AC 40 ms 3596 KiB
test_05.txt AC 45 ms 3624 KiB
test_06.txt AC 43 ms 3600 KiB
test_07.txt AC 41 ms 3596 KiB
test_08.txt AC 40 ms 3624 KiB
test_09.txt AC 40 ms 3624 KiB
test_10.txt AC 40 ms 3560 KiB
test_11.txt AC 40 ms 3480 KiB
test_12.txt AC 54 ms 3644 KiB
test_13.txt AC 55 ms 3688 KiB
test_14.txt AC 66 ms 3852 KiB
test_15.txt AC 66 ms 3680 KiB
test_16.txt AC 88 ms 5692 KiB
test_17.txt AC 88 ms 5980 KiB
test_18.txt AC 88 ms 6040 KiB
test_19.txt AC 88 ms 5840 KiB
test_20.txt AC 151 ms 26744 KiB
test_21.txt AC 150 ms 26872 KiB
test_22.txt AC 150 ms 26952 KiB
test_23.txt AC 150 ms 26952 KiB
test_24.txt AC 150 ms 26760 KiB
test_25.txt AC 150 ms 26632 KiB
test_26.txt AC 151 ms 26704 KiB
test_27.txt AC 150 ms 26692 KiB
test_28.txt AC 151 ms 26744 KiB
test_29.txt AC 151 ms 26816 KiB
test_30.txt AC 120 ms 15952 KiB
test_31.txt AC 117 ms 13516 KiB
test_32.txt AC 157 ms 25528 KiB
test_33.txt AC 122 ms 16352 KiB
test_34.txt AC 146 ms 22556 KiB
test_35.txt AC 148 ms 23520 KiB
test_36.txt AC 121 ms 13432 KiB
test_37.txt AC 130 ms 18256 KiB
test_38.txt AC 158 ms 25268 KiB
test_39.txt AC 123 ms 17732 KiB
test_40.txt AC 99 ms 26704 KiB
test_41.txt AC 98 ms 26812 KiB
test_42.txt AC 86 ms 26812 KiB
test_43.txt AC 85 ms 26832 KiB
test_44.txt AC 83 ms 26820 KiB
test_45.txt AC 84 ms 26820 KiB
test_46.txt AC 84 ms 26644 KiB
test_47.txt AC 81 ms 26820 KiB
test_48.txt AC 82 ms 26760 KiB
test_49.txt AC 122 ms 26820 KiB
test_50.txt AC 104 ms 26820 KiB
test_51.txt AC 120 ms 26780 KiB
test_52.txt AC 136 ms 26952 KiB
test_53.txt AC 141 ms 26688 KiB
test_54.txt AC 136 ms 26760 KiB
test_55.txt AC 149 ms 26832 KiB
test_56.txt AC 149 ms 26740 KiB
test_57.txt AC 149 ms 26744 KiB
test_58.txt AC 149 ms 26812 KiB
test_59.txt AC 151 ms 26832 KiB
test_60.txt AC 149 ms 26772 KiB
test_61.txt AC 148 ms 26704 KiB
test_62.txt AC 149 ms 26808 KiB
test_63.txt AC 149 ms 26812 KiB
test_64.txt AC 72 ms 26744 KiB
test_65.txt AC 72 ms 26692 KiB