Задать вопрос
@YSSITJ

В чем отличие представленных программ на C++ и Python?

Решил поделать задачи из тренировочного контеста яндекса, но столкнулся с тем что написал слишком ресурсозатратный код, нашел решение на гитхабе, но возникла проблема. Изначально дана программа на C++, но так как синтаксиса C++ я не знаю, решил конвертировать код в Python с помощью сайта-конвертера. Код на питоне не проходит все тесты, можете подсказать в чем разница программ.(Единственное в коде Python поменял вывод с файла, в стандартный)
Если нужно условие задачи то могу отправить.
#include <iostream>
#include <fstream>
#include <map>
#define ID (i->first).first
#define TIME (i->first).second
#define STATUS i->second

using namespace std;

int main() {
    ifstream fin("input.txt");
    ofstream fout("output.txt");

    int n;
    fin >> n;

    multimap<pair<int, int>, char> events;

    for (int i = 0; i < n; i++) {
        int d, h, m, id; char status;
        fin >> d >> h >> m >> id >> status;
        if (status != 'B')
            events.insert({{id, d*24*60 + h*60 + m}, status});
    }

    map<int, int> res;
    for (auto i = events.begin(); i != events.end(); ++i) {
        if (!res.count(ID))
            res.insert({ID, 0});
        if (STATUS == 'A')
            res[ID] -= TIME;
        if (STATUS == 'S' || STATUS == 'C')
            res[ID] += TIME;
    }

    for (auto i = res.begin(); i != res.end(); ++i) {
        fout << i->second << ' ';
    }
}

from collections import defaultdict


with open("input.txt", "r") as fin:
    n = int(fin.readline())

    events = defaultdict(list)

    for _ in range(n):
        d, h, m, id_num, status = fin.readline().split()
        d, h, m, id_num = int(d), int(h), int(m), int(id_num)
        if status != 'B':
            events[id_num].append((d*24*60 + h*60 + m, status))

    res = defaultdict(int)
    for id_num, event_list in events.items():
        for event in event_list:
            time, status = event
            if status == 'A':
                res[id_num] -= time
            if status == 'S' or status == 'C':
                res[id_num] += time
print(' '.join(sorted(map(str, res.values()), reverse=True)))
  • Вопрос задан
  • 174 просмотра
Подписаться 1 Средний 2 комментария
Решения вопроса 1
AshBlade
@AshBlade
Просто хочу быть счастливым
1. В C++ все сохраняется в output.txt, в питоне - stdout
2. В конце, на C++ сортировка возрастающая, в питоне - убывающая
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы