Тема: Задачка
Показать сообщение отдельно
Старый 04.12.2010, 22:59   #2
den
Дэвелопер
 
Аватар для den
 
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений
(для 2,419 пользователей)
Радость Ответ: Задачка

эээ, импер, зачем свой пост удалил, он же мне помог

ещё вопросик. последний
Вот задача
Дана куча строк. Далее заданы запросы, представляющие собой некоторые строки. Для каждого префикса каждого запроса необходимо вывести количество строк в куче, которые имеют такое же начало, как и префикс запроса.

Входные данные: В первой строке содержится два целых числа N и М – количество строк в куче и количество запросов. (1 <= N, M <= 105). Далее записаны N строк кучи. Далее содержится строк M запросов. Все строки состоят из маленьких латинских букв. Длина любой строки ввода не превышает 21 символ.

Выходные данные: Для каждого запроса выведите в отдельной строке L чисел через пробел, где L – длина строки запроса. Каждое i-ое число должно содержать ответ задачи для префикса длины i строки запроса.

Пример входных данных
3 4
abacaba
dabaduba
abad
abac
aba
dab
adcb

Пример выходных данных
2 2 2 1
2 2 2
1 1 1
2 0 0 0
вот мой код:
#include <iostream>
#include <string>
using namespace std;

string str_masN[100001], str_masM[100001];

int main()
{
    
int nm;
    
cin >> >> m;
    for(
int i 0ni++)
        
cin >> str_masN[i];
    for(
int i 0mi++)
        
cin >> str_masM[i];
    
    for(
int i 0mi++)
    {
        
int size  str_masM[i].size();
        const 
char buf str_masM[i].c_str();
        for(
int j 1<= sizej++)
        {
            
int nn 0;
            for(
int k 0nk++)
            {
                if(
str_masN[k].find(buf0j) == 0)
                    
nn++;
            }
            if(
nn == 0)
            {
                for(
int l 0size 1l++) cout << << ' ';
                break;
            }
            
cout << nn << ' ';
        }
        
cout << endl;
    }
    return 
0;

он абсолютно рабочий, но сцуко на 165 мс больше положенного времени выполняется
Как ещё его можно оптимизировать?
(Offline)
 
Ответить с цитированием