Submission #2446340


Source Code Expand

#include <iostream>
#include <math.h>
#include <sstream>
#include <string>
#include <cstddef>
#include <ios> // std::left, std::right
#include <iomanip> // std::setw(int), std::setfill(char)

using namespace std;

void time_sorting(int n, int *time_s, int *time_e);
void time_shrinking(int n, int *time_s_in, int *time_e_in, int *time_s_out, int *time_e_out);
void show_time(int n, int *s, int *e);

int main()
{
    // get input
    int n;
    cin >> n;
    int *time_s, *time_e;
    time_s = new int[n];
    time_e = new int[n];

    for(int i = 0; i < n; i++)
    {
        string line, s, e;
        cin >> line;
        istringstream stream(line);
        getline(stream, s, '-');
        getline(stream, e, '-');
        
        time_s[i] = (((atoi(s.c_str()))+0)/5)*5;
        time_e[i] = (((atoi(e.c_str()))+4)/5)*5;
        if((time_e[i]%100)==60) time_e[i]+=40;
    }

    
    time_sorting(n, time_s, time_e);
    
    int *time_s_out, *time_e_out;
    time_s_out = new int[n];
    time_e_out = new int[n];
    for(int i = 0; i < n; i++)
    {
        time_s_out[i] = -1;
        time_e_out[i] = -1;
    }

    time_shrinking(n, time_s, time_e, time_s_out, time_e_out);
    show_time(n, time_s_out, time_e_out);
    
    delete[] time_s;
    delete[] time_e;
    delete[] time_s_out;
    delete[] time_e_out;
    
    return 0;
}


void time_sorting(int n, int *time_s, int *time_e)
{
    int i, j, tmp;
    for (i = 0; i < n-1; i++)
    {
        for (j = i+1; j < n; j++)
        {
            if(time_s[j] < time_s[i])
            {
                // sorting start
                tmp = time_s[i];
                time_s[i] = time_s[j];
                time_s[j] = tmp;
                // sorting end
                tmp = time_e[i];
                time_e[i] = time_e[j];
                time_e[j] = tmp;
                }
        }
    }
}


void time_shrinking(int n, int *time_s_in, int *time_e_in, int *time_s_out, int *time_e_out)
{
    time_s_out[0] = time_s_in[0];
    time_e_out[0] = time_e_in[0];
    
    int current_pos = 0;
    for(int i = 1; i < n; i++)
    {
        if(time_e_out[current_pos] < time_s_in[i])
        {
            current_pos++;
            time_s_out[current_pos] = time_s_in[i];
            time_e_out[current_pos] = time_e_in[i];
        }
        else
        {
            if(time_e_out[current_pos] < time_e_in[i])
            {
                time_e_out[current_pos] = time_e_in[i];
            }
        }
    }
}


void show_time(int n, int *s, int *e)
{
    for(int i=0; i<n; i++)
    {
        if(s[i] == -1) break;
        cout << std::setfill('0') << std::right << std::setw(4) << s[i] << "-" << std::setfill('0') << std::right << std::setw(4) << e[i] << endl;
    }
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User Hi86F7w
Language C++14 (GCC 5.4.1)
Score 100
Code Size 2848 Byte
Status AC
Exec Time 433 ms
Memory 768 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 334 ms 768 KB
chokudai_ga_cho.txt AC 433 ms 768 KB
test_01.txt AC 2 ms 256 KB
test_02.txt AC 2 ms 256 KB
test_03.txt AC 2 ms 256 KB
test_04.txt AC 2 ms 256 KB
test_05.txt AC 2 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 3 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 3 ms 256 KB
test_16.txt AC 1 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 407 ms 768 KB
test_22.txt AC 385 ms 768 KB
test_23.txt AC 399 ms 768 KB
test_24.txt AC 385 ms 768 KB
test_25.txt AC 395 ms 768 KB
test_26.txt AC 408 ms 768 KB
test_27.txt AC 335 ms 768 KB
test_28.txt AC 374 ms 768 KB
test_29.txt AC 1 ms 256 KB
test_30.txt AC 1 ms 256 KB
test_31.txt AC 21 ms 256 KB
test_32.txt AC 1 ms 256 KB
test_33.txt AC 196 ms 512 KB
test_34.txt AC 1 ms 256 KB
test_35.txt AC 2 ms 256 KB
test_36.txt AC 398 ms 768 KB
test_37.txt AC 386 ms 768 KB
test_38.txt AC 407 ms 768 KB
test_39.txt AC 369 ms 768 KB
test_40.txt AC 373 ms 768 KB
test_41.txt AC 334 ms 768 KB
test_42.txt AC 373 ms 768 KB
test_43.txt AC 375 ms 768 KB