답안 #313934

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
313934 2020-10-17T10:56:12 Z phathnv Titlovi (COCI19_titlovi) C++11
50 / 50
1 ms 256 KB
#include <bits/stdc++.h>

#define mp make_pair
#define X first
#define Y second
#define taskname "TITLOVI"

using namespace std;

typedef long long ll;
typedef pair <int, int> ii;

struct Ttime{
    int h, m, s, ms;
    int getNum(const string &s, int l, int r){
        int res = 0;
        for(int i = l; i <= r; i++){
            assert(isdigit(s[i]));
            res = res * 10 + s[i] - '0';
        }
        return res;
    }
    void init(const string &str){
        h = getNum(str, 0, 1);
        m = getNum(str, 3, 4);
        s = getNum(str, 6, 7);
        ms = getNum(str, 9, 11);
    }
    void shift(int t){
        ms += t;
        while (ms >= 1000)
            ms -= 1000, s++;
        while (ms < 0)
            ms += 1000, s--;
        while (s >= 60)
            s -= 60, m++;
        while (s < 0)
            s += 60, m--;
        while (m >= 60)
            m -= 60, h++;
        while (m < 0)
            m += 60, h--;
    }
    void print(){
        printf("%02d:%02d:%02d,%03d", h, m, s, ms);
    }
};

struct subtitle{
    int ind;
    Ttime from, to;
    string content;
    void shiftTime(int t){
        from.shift(t);
        to.shift(t);
    }
    void print(){
        cout << ind << endl;
        from.print();
        cout << " --> ";
        to.print();
        cout << content;
    }
};


int main(){
    string s;
    vector <subtitle> subs;
    while (s != "#"){
        subtitle sub;

        cin >> s;
        sscanf(s.c_str(), "%d", &sub.ind);
        cin >> s;
        sub.from.init(s);
        cin >> s;
        cin >> s;
        sub.to.init(s);
        getline(cin, s);
        s = "*";
        while (s != "#" && s != ""){
            getline(cin, s);
            sub.content.push_back('\n');
            sub.content += s;
        }
        subs.push_back(sub);
    }

    int t;
    cin >> t;
    for(subtitle sub : subs){
        sub.shiftTime(t);
        sub.print();
        if (sub.content.back() != '#')
            cout << endl;
    }

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 256 KB Output is correct
2 Correct 0 ms 256 KB Output is correct
3 Correct 1 ms 256 KB Output is correct
4 Correct 1 ms 256 KB Output is correct
5 Correct 0 ms 256 KB Output is correct