Submission #5811057


Source Code Expand

#include <stdio.h>
#include <assert.h>
#include <fstream>
#include <iostream>
#include <algorithm>
#include <array>
#include <vector>
#include <queue>
#include <set>
#include <cmath>
#include <unordered_map>
//#include <unordered_set>
//#include <boost/container/static_vector.hpp>
//#include <boost/unordered_set.hpp>
//#include <boost/unordered_map.hpp>
//#include <unistd.h>

const int MAX_N = 100050;
int N, L;
long long x[MAX_N];
char d[MAX_N];

int firstR() {
    for (int i = 1; i <= N; i++) {
        if (d[i] == 'R') {
            return i;
        }
    }
    return -1;
}

int lastL() {
    for (int i = N; 0 <= i; i--) {
        if (d[i] == 'L') {
            return i;
        }
    }
    return -1;
}

int main(int argc, char **argv) {
    std::cin >> N >> L;

    for (int i = 1; i <= N; i++) {
        std::cin >> x[i] >> d[i];
    }

    int fr = firstR();
    int ll = lastL();

    //std::cout << fr << " " << ll << std::endl;

    long long ret = 0;
    if (fr == -1) {
        for (int i = 1; i <= N; i++) {
            ret += x[i] - i;
        }
    } else if (ll == -1) {
        for (int i = 0; i < N; i++) {
            ret += L - i - x[N-i];
        }
    } else {
        for (int i = 1; i < fr; i++) {
            ret += x[i] - i;
        }
        for (int i = 0; ll < N - i; i++) {
            ret += L - i - x[N-i];
        }
        //std::cout << ret << std::endl;
        int cntr = 0;
        int cntl = 0;
        for (int i = fr; i <= ll; i++) {
            if (d[i] == 'R') {
                cntr++;
            } else {
                cntl++;
            }
            if (d[i] == 'L' && (i == N || d[i+1] == 'R')) {
                //std::cout << i << " " << cntr << " " << cntl << std::endl;
                if (cntr > cntl) {
                    int tmp = x[i-cntl+1];
                    for (int j = 1; j <= cntl; j++) {
                        ret += x[i-cntl+j] - tmp - (j - 1);  
                    }
                    for (int j = 1; j <= cntr; j++) {
                        ret += (tmp - j) - x[i-cntl-j+1];
                    }
                } else {
                    int tmp = x[i-cntl];
                    //std::cout << "check:" << tmp << std::endl;
                    for (int j = 1; j <= cntl; j++) {
                        ret += x[i-cntl+j] - (tmp + j);
                        //std::cout << "c:" << ret << " " << x[i-cntl+j] << " " << tmp + j << std::endl;
                    }
                    for (int j = 1; j <= cntr; j++) {
                        ret += (tmp - j + 1) - x[i-cntl-j+1];
                    }
                }
                cntr = 0;
                cntl = 0;
            }
        }
    }

    std::cout << ret << std::endl;

    return 0;

}

Submission Info

Submission Time
Task C - ウサギ跳び
User critter
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2853 Byte
Status AC
Exec Time 49 ms
Memory 1152 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 36 ms 1152 KB
subtask1_04.txt AC 37 ms 1152 KB
subtask1_05.txt AC 43 ms 1152 KB
subtask1_06.txt AC 42 ms 1152 KB
subtask1_07.txt AC 42 ms 1152 KB
subtask1_08.txt AC 48 ms 1152 KB
subtask1_09.txt AC 48 ms 1152 KB
subtask1_10.txt AC 48 ms 1152 KB
subtask1_11.txt AC 49 ms 1152 KB
subtask1_12.txt AC 36 ms 1152 KB
subtask1_13.txt AC 42 ms 1152 KB
subtask1_14.txt AC 48 ms 1152 KB
subtask1_15.txt AC 48 ms 1152 KB
subtask1_16.txt AC 48 ms 1152 KB
subtask1_17.txt AC 19 ms 640 KB
subtask1_18.txt AC 21 ms 768 KB
subtask1_19.txt AC 6 ms 384 KB
subtask1_20.txt AC 33 ms 1024 KB
subtask1_21.txt AC 10 ms 512 KB
subtask1_22.txt AC 16 ms 640 KB
subtask1_23.txt AC 30 ms 896 KB
subtask1_24.txt AC 14 ms 512 KB
subtask1_25.txt AC 37 ms 896 KB
subtask1_26.txt AC 45 ms 1024 KB
subtask1_27.txt AC 2 ms 256 KB
subtask1_28.txt AC 48 ms 1152 KB
subtask1_29.txt AC 34 ms 896 KB
subtask1_30.txt AC 11 ms 384 KB
subtask1_31.txt AC 29 ms 768 KB
subtask1_32.txt AC 46 ms 1152 KB