Submission #3237683


Source Code Expand

#include"bits/stdc++.h"
using namespace std;
using ll = int64_t;

int main() {
    ll N, L;
    cin >> N >> L;

    struct Usagi {
        ll x, follow_num;
        char d;
        bool move;
    };
    vector<Usagi> usa(N);
    for (ll i = 0; i < N; i++) {
        cin >> usa[i].x >> usa[i].d;
        usa[i].move = true;
    }
    

    //右向きウサギについて数える
    ll num = 0;
    for (ll i = 0; i < N; i++) {
        if (usa[i].d == 'R') {
            usa[i].follow_num = num++;
        } else {
            num = 0;
        }
    }

    //左向きウサギについて数える
    num = 0;
    for (ll i = N - 1; i >= 0; i--) {
        if (usa[i].d == 'L') {
            usa[i].follow_num = num++;
        } else {
            num = 0;
        }
    }

    //i番目のウサギが動くかどうかについて考える
    //前にいるウサギがこちらを向いており
    //向こうの方が後ろに続くウサギが多かったらこっちは動かない
    for (ll i = 0; i < N - 1; i++) {
        if (usa[i].d == 'R' && usa[i + 1].d == 'L') {
            if (usa[i].follow_num < usa[i + 1].follow_num) {
                usa[i].move = false;
            } else {
                usa[i + 1].move = false;
            }
            i++;
        }
    }

    ll ans = 0;

    //右向きウサギを限界まで動かす
    //行ける一番右のマス
    ll limit = L;
    for (ll i = N - 1; i >= 0; i--) {
        if (usa[i].d == 'L' || !usa[i].move) {
            limit = usa[i].x - 1;
        } else {
            ans += limit - usa[i].x;
            usa[i].x = limit;
            limit--;
        }
    }

    //左向きウサギを限界まで動かす
    limit = 1;
    for (ll i = 0; i < N; i++) {
        if (usa[i].d == 'R' || !usa[i].move) {
            limit = usa[i].x + 1;
        } else {
            ans += usa[i].x - limit;
            usa[i].x = limit;
            limit++;
        }
    }

    cout << ans << endl;
}

Submission Info

Submission Time
Task C - ウサギ跳び
User tokumini
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2060 Byte
Status AC
Exec Time 50 ms
Memory 2560 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 35
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt
All sample_01.txt, sample_02.txt, sample_03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt, subtask1_23.txt, subtask1_24.txt, subtask1_25.txt, subtask1_26.txt, subtask1_27.txt, subtask1_28.txt, subtask1_29.txt, subtask1_30.txt, subtask1_31.txt, subtask1_32.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 256 KB
sample_02.txt AC 1 ms 256 KB
sample_03.txt AC 1 ms 256 KB
subtask1_01.txt AC 1 ms 256 KB
subtask1_02.txt AC 1 ms 256 KB
subtask1_03.txt AC 37 ms 2560 KB
subtask1_04.txt AC 37 ms 2560 KB
subtask1_05.txt AC 43 ms 2560 KB
subtask1_06.txt AC 43 ms 2560 KB
subtask1_07.txt AC 43 ms 2560 KB
subtask1_08.txt AC 50 ms 2560 KB
subtask1_09.txt AC 49 ms 2560 KB
subtask1_10.txt AC 49 ms 2560 KB
subtask1_11.txt AC 49 ms 2560 KB
subtask1_12.txt AC 37 ms 2560 KB
subtask1_13.txt AC 44 ms 2560 KB
subtask1_14.txt AC 49 ms 2560 KB
subtask1_15.txt AC 49 ms 2560 KB
subtask1_16.txt AC 49 ms 2560 KB
subtask1_17.txt AC 20 ms 1408 KB
subtask1_18.txt AC 22 ms 1536 KB
subtask1_19.txt AC 6 ms 512 KB
subtask1_20.txt AC 35 ms 2304 KB
subtask1_21.txt AC 11 ms 768 KB
subtask1_22.txt AC 17 ms 1152 KB
subtask1_23.txt AC 32 ms 2048 KB
subtask1_24.txt AC 15 ms 1024 KB
subtask1_25.txt AC 39 ms 2176 KB
subtask1_26.txt AC 46 ms 2432 KB
subtask1_27.txt AC 2 ms 256 KB
subtask1_28.txt AC 50 ms 2560 KB
subtask1_29.txt AC 36 ms 1920 KB
subtask1_30.txt AC 12 ms 768 KB
subtask1_31.txt AC 30 ms 1664 KB
subtask1_32.txt AC 48 ms 2432 KB