Submission #205737


Source Code Expand

#include<iostream>
#include<vector>
#include<string>
#include<sstream>
#include<iomanip>

struct RainTime
{

  std::vector<int> time;
  RainTime(int start = 0, int end = 0)
  {
    time.assign(2, 0);
    time[0] = start;
    time[1] = end;
  };
  friend std::ostream& operator<<(std::ostream& os, const RainTime& t);
};
std::ostream& operator<<(std::ostream& os, const RainTime& t)
{

  os << std::setfill('0') << std::setw(4) <<std::right<< t.time[0] << "-";
  os << std::setfill('0') << std::setw(4) <<std::right<< t.time[1];
  return os;
}

RainTime transformTime(std::string str)
{
  RainTime time;
  std::vector<std::string> str_time(2);
  str_time[0] = str.substr(0 ,4);
  str_time[1] = str.substr(5, 4);

  for(unsigned int i = 0; i < 2; ++i)
  {
    int tmp = 0;
    std::stringstream ss;
    ss << str_time[i];
    ss >> tmp;

    int hh = tmp / 100;
    int mm = tmp % 100;

    time.time[i] = (hh * 60 + mm);
  }

  int tmp = 0;
  tmp = time.time[0] % 10;
  if     (tmp < 5) time.time[0] -= tmp;
  else if(tmp > 5) time.time[0] -= tmp - 5;

  tmp = time.time[1] % 10;
  if(tmp != 0)
  {
    if     (tmp < 5) time.time[1] += 5 - tmp;
    else if(tmp > 5) time.time[1] += 10 - tmp;
  }

  return time;
}//split_time

int main(void)
{
  int num = 0;
  std::cin >> num;

  std::vector<RainTime> rain_time(num);

  for(unsigned int i = 0; i < num; ++i)
  {
    std::string str = "";
    std::cin >> str;

    rain_time[i] = transformTime(str);

///
//std::cout << rain_time[i] << std::endl;
  }

  std::vector<int> imosu(1442,0);//24*60=1440
  for(unsigned int i = 0; i < num; ++i)
  {
    imosu[rain_time[i].time[0]] += 1;
    imosu[(rain_time[i].time[1])+1] += -1;

///
//std::cout<<rain_time[i].time[0]/5;
//std::cout<<rain_time[i].time[1]/5+1<<std::endl;
  }

///
/*
  for(unsigned int i = 0; i < 290; ++i)
  {
    if(i%50==0)std::cout<<std::endl;
    std::cout<<imosu[i];
  }
std::cout<<std::endl;
*/

  std::vector<RainTime> rain;

  std::vector<int> imosu_plus(1442,0);
  bool sw = false;  //falseはrain_start,trueはrain_end
  int n = 0;
  imosu_plus[0] = imosu[0];
  if(imosu[0]>0)
  {
    rain.push_back(RainTime(0));
    sw =true;
  }
  for(unsigned int i = 1; i < 1442; ++i)
  {
    imosu_plus[i] = imosu[i] + imosu_plus[i-1];

///
//if(i%50==0)std::cout<<std::endl;
//std::cout<< imosu_plus[i];
    
    if(!sw)
    {
      if(imosu_plus[i] > 0)
      {
        rain.push_back(RainTime(i));
        n = rain.size()-1;
///
//std::cout<<":"<<rain[n]<<std::endl;
        sw = true;
      }
    }else
    {
      if(imosu_plus[i] == 0)
      {
        rain[n].time[1] = (i-1);
        sw = false;
      }
    }

  }

  for(unsigned int i = 0; i < rain.size(); ++i)
  {
    int tmp = rain[i].time[0];
///
//std::cout<<tmp<<" ";
    rain[i].time[0] = (tmp/60)*100+tmp%60;
    tmp = rain[i].time[1];
///
//std::cout<<tmp<<std::endl;
    rain[i].time[1] = (tmp/60)*100+tmp%60;
    std::cout << rain[i] << std::endl;
  }

  return 0;
}//main

Submission Info

Submission Time
Task D - 感雨時刻の整理
User yokobutton
Language C++ (G++ 4.6.4)
Score 100
Code Size 3108 Byte
Status AC
Exec Time 177 ms
Memory 2720 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 87 ms 936 KB
00_sample_02.txt AC 27 ms 1008 KB
00_sample_03.txt AC 25 ms 984 KB
cho_cho_chokudai.txt AC 143 ms 2720 KB
chokudai_ga_cho.txt AC 153 ms 2600 KB
test_01.txt AC 26 ms 992 KB
test_02.txt AC 25 ms 1056 KB
test_03.txt AC 25 ms 1004 KB
test_04.txt AC 26 ms 1000 KB
test_05.txt AC 26 ms 984 KB
test_06.txt AC 25 ms 1056 KB
test_07.txt AC 25 ms 992 KB
test_08.txt AC 25 ms 1008 KB
test_09.txt AC 27 ms 1016 KB
test_10.txt AC 27 ms 1056 KB
test_11.txt AC 27 ms 1008 KB
test_12.txt AC 27 ms 1016 KB
test_13.txt AC 26 ms 1008 KB
test_14.txt AC 27 ms 1012 KB
test_15.txt AC 28 ms 1136 KB
test_16.txt AC 27 ms 1004 KB
test_17.txt AC 27 ms 1008 KB
test_18.txt AC 26 ms 1140 KB
test_19.txt AC 27 ms 1060 KB
test_20.txt AC 27 ms 1008 KB
test_21.txt AC 142 ms 2668 KB
test_22.txt AC 144 ms 2592 KB
test_23.txt AC 141 ms 2680 KB
test_24.txt AC 143 ms 2668 KB
test_25.txt AC 141 ms 2664 KB
test_26.txt AC 145 ms 2664 KB
test_27.txt AC 142 ms 2668 KB
test_28.txt AC 143 ms 2604 KB
test_29.txt AC 25 ms 980 KB
test_30.txt AC 25 ms 992 KB
test_31.txt AC 42 ms 1264 KB
test_32.txt AC 25 ms 980 KB
test_33.txt AC 103 ms 2092 KB
test_34.txt AC 25 ms 1048 KB
test_35.txt AC 26 ms 1060 KB
test_36.txt AC 177 ms 2664 KB
test_37.txt AC 145 ms 2652 KB
test_38.txt AC 148 ms 2668 KB
test_39.txt AC 143 ms 2680 KB
test_40.txt AC 145 ms 2672 KB
test_41.txt AC 144 ms 2672 KB
test_42.txt AC 145 ms 2672 KB
test_43.txt AC 143 ms 2668 KB