Submission #4091536


Source Code Expand

#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>

using namespace std;

class RainTimeData{
    public:
        int m_startTime;
        int m_endTime;
        void setTime(int,int);
        bool operator<(const RainTimeData&) const;
};

void RainTimeData::setTime(int start, int end){
    m_startTime = start;
    m_endTime = end;
    return;
}

bool RainTimeData::operator<(const RainTimeData &another) const{
    if(m_startTime != another.m_startTime){
        return m_startTime < another.m_startTime;
    }else{
        return m_endTime < another.m_endTime;
    }
}

class ResultData{
    public:
        int m_startTime;
        int m_endTime;
};

int main(){
    int n;
    cin >> n;
    vector<RainTimeData> data(n);
    for(int i = 0;i < n;i++){
        string str;
        cin >> str;
        int s,e;
        s = stoi(str.substr(0,4));
        e = stoi(str.substr(5,4));
        // 降り始めの時刻を丸める
        if(s%5 != 0){
            s = s/5*5;
        }
        // 降り終わりの時刻を丸める
        if(e%5 != 0){
            e = e/5*5 + 5;
            if(e%100 == 60){
                e = e-60+100;
            }
        }
        data[i].setTime(s,e);
    }
    // ソート
    sort(data.begin(),data.end());

    // 出力データの作成
    vector<ResultData> resultVector;
    ResultData tmpData;
    for(auto itr = data.begin();itr != data.end();itr++){
        // 最初のデータの場合
        if(itr == data.begin()){
            tmpData = ResultData();
            tmpData.m_startTime = (*itr).m_startTime;
            tmpData.m_endTime = (*itr).m_endTime;
            continue;
        }

        // 作成している出力データと、取り出したデータが、重複しない場合
        if(tmpData.m_endTime < (*itr).m_startTime){
            // 作成している出力データを、確定したデータとしてvectorに保存
            resultVector.push_back(tmpData);
            // 取り出したデータから、出力データを作成
            tmpData = ResultData();
            tmpData.m_startTime = (*itr).m_startTime;
            tmpData.m_endTime = (*itr).m_endTime;
            continue;
        }

        // 作成している出力データと、取り出したデータに重複が存在する場合
        // 作成している出力データを修正
        if(tmpData.m_endTime < (*itr).m_endTime){
            tmpData.m_endTime = (*itr).m_endTime;
        }
    }
    // 最後のデータをvectorに保存
    resultVector.push_back(tmpData);

    // 出力データを出力
    for(auto itr = resultVector.begin();itr != resultVector.end();itr++){
        printf("%04d-%04d\n",(*itr).m_startTime,(*itr).m_endTime);
    }

    return 0;
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User mataneko
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2872 Byte
Status AC
Exec Time 30 ms
Memory 512 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 48
Set Name Test Cases
all 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, cho_cho_chokudai.txt, chokudai_ga_cho.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
Case Name Status Exec Time Memory
00_sample_01.txt AC 1 ms 256 KB
00_sample_02.txt AC 1 ms 256 KB
00_sample_03.txt AC 1 ms 256 KB
cho_cho_chokudai.txt AC 28 ms 512 KB
chokudai_ga_cho.txt AC 29 ms 512 KB
test_01.txt AC 1 ms 256 KB
test_02.txt AC 1 ms 256 KB
test_03.txt AC 1 ms 256 KB
test_04.txt AC 1 ms 256 KB
test_05.txt AC 1 ms 256 KB
test_06.txt AC 2 ms 256 KB
test_07.txt AC 1 ms 256 KB
test_08.txt AC 1 ms 256 KB
test_09.txt AC 2 ms 256 KB
test_10.txt AC 2 ms 256 KB
test_11.txt AC 2 ms 256 KB
test_12.txt AC 2 ms 256 KB
test_13.txt AC 2 ms 256 KB
test_14.txt AC 2 ms 256 KB
test_15.txt AC 2 ms 256 KB
test_16.txt AC 2 ms 256 KB
test_17.txt AC 2 ms 256 KB
test_18.txt AC 2 ms 256 KB
test_19.txt AC 2 ms 256 KB
test_20.txt AC 2 ms 256 KB
test_21.txt AC 29 ms 512 KB
test_22.txt AC 29 ms 512 KB
test_23.txt AC 29 ms 512 KB
test_24.txt AC 29 ms 512 KB
test_25.txt AC 29 ms 512 KB
test_26.txt AC 29 ms 512 KB
test_27.txt AC 28 ms 512 KB
test_28.txt AC 29 ms 512 KB
test_29.txt AC 1 ms 256 KB
test_30.txt AC 1 ms 256 KB
test_31.txt AC 6 ms 256 KB
test_32.txt AC 1 ms 256 KB
test_33.txt AC 19 ms 384 KB
test_34.txt AC 1 ms 256 KB
test_35.txt AC 2 ms 256 KB
test_36.txt AC 30 ms 512 KB
test_37.txt AC 30 ms 512 KB
test_38.txt AC 29 ms 512 KB
test_39.txt AC 30 ms 512 KB
test_40.txt AC 29 ms 512 KB
test_41.txt AC 27 ms 512 KB
test_42.txt AC 28 ms 512 KB
test_43.txt AC 27 ms 512 KB