Open TakefumiYamamura opened 7 years ago
以下略
[http://abc001.contest.atcoder.jp/tasks/abc001_4:embed:cite]
文字列の扱いがめんどくさいだけ。雨がふっている時間を管理する配列をいもす法をつかって保持してやればいい。おしまい。 いもす法の解説は
[http://imoz.jp/algorithms/imos_method.html]
とかがわかりやすい。
というかいもす法って英語でなんていうんだろう。
#include <iostream> #include <vector> #include <string> #include <stdlib.h> using namespace std; class Time { public: string timeS; int start; int finish; Time(string time); void convert(); static string convertToS(int i); }; Time::Time(string timeS){ this->timeS = timeS; convert(); } void Time::convert(){ int hour = 0; int minutes = 0; hour += (timeS[0] - '0') * 10; hour += (timeS[1] - '0'); minutes += (timeS[2] - '0') * 10; minutes += (timeS[3] - '0'); minutes /= 5; start = hour * 12 + minutes; hour = 0; minutes = 0; hour += (timeS[5] - '0') * 10; hour += (timeS[6] - '0'); minutes += (timeS[7] - '0') * 10; minutes += (timeS[8] - '0'); minutes = (minutes + 4) / 5; finish = hour * 12 + minutes; } string Time::convertToS(int i){ string ans = "0000"; ans[0] = '0' + (i / 12 / 10); ans[1] = '0' + (i / 12 % 10); i = i % 12; ans[2] = '0' + (5 * i / 10); ans[3] = '0' + (5 * i % 10); return ans; } class SortRainTime { public: int n; vector<int> timeArray; SortRainTime(); ~SortRainTime(); void exec(); }; SortRainTime::SortRainTime(){ timeArray.resize(24*12+3); for (int i = 0; i < timeArray.size(); ++i) { timeArray[i] = 0; } cin >> n; for (int i = 0; i < n; ++i) { string tmp; cin >> tmp; Time t = Time(tmp); timeArray[t.start]++; timeArray[t.finish]--; } for (int i = 0; i < timeArray.size() - 1; ++i) { timeArray[i+1] += timeArray[i]; } } SortRainTime::~SortRainTime(){ } void SortRainTime::exec(){ string start; string finish; timeArray[24*12 + 1] = 0; if(timeArray[0] > 0) start = Time::convertToS(0); for (int i = 0; i <= 24 * 12; ++i) { if(timeArray[i] == 0 && timeArray[i+1] > 0){ start = Time::convertToS(i+1); } if(timeArray[i] > 0 && timeArray[i+1] == 0){ finish = Time::convertToS(i+1); cout << start << '-' << finish << endl; } } } int main(){ SortRainTime srt = SortRainTime(); srt.exec(); }
D - 感雨時刻の整理
問題
以下略
[http://abc001.contest.atcoder.jp/tasks/abc001_4:embed:cite]
note
文字列の扱いがめんどくさいだけ。雨がふっている時間を管理する配列をいもす法をつかって保持してやればいい。おしまい。 いもす法の解説は
[http://imoz.jp/algorithms/imos_method.html]
とかがわかりやすい。
というかいもす法って英語でなんていうんだろう。