Форум программистов, компьютерный форум CyberForum.ru

Два указателя. Сложно - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как выйти из циклов http://www.cyberforum.ru/cpp-beginners/thread859628.html
#include "stdafx.h" #include <stdio.h> #include <conio.h> #include <math.h> #include <Windows.h> #include <iostream> void main(void) { SetConsoleCP(1251);
C++ Почему так? Я вот уже довольно много времени читаю книги и разные коды по программированию, но все так и не понял. Почему хорошие программисты используют запись std:: а не просто в начале написать using namespace std; ?? В чем принципиальное различие между этими двумя записями и какую лучше применять? http://www.cyberforum.ru/cpp-beginners/thread859622.html
Необходимо написать калькулятор(деление), чтобы при выводе показывало 30 знаков после запятой C++
Необходимо написать калькулятор(деление), чтобы при выводе показывало 30 знаков после запятой. Типо 1/3 = 0,333333333333333333333333333334 P.S. Еще учитель просить использовать массив. Зачем? И как?
C++ поиск подстроки в строке
Всем доброго времени суток! Дано: две строки типа string, к примеру str1 = "HeLLo" и str2 = "hell" Вопрос: как найти из str1 подстроку str2 без учёта регистра? заранее спасибо
C++ Поиск и замена слов в файле txt http://www.cyberforum.ru/cpp-beginners/thread859590.html
Как заменить и найти слова в файле txt на С++. То есть есть файл вот такой структуры AAA БББ BBB 111 222 ыыы
C++ Рекурсивная функция Походу что-то с массивами не то, когда ввожу слишком большое число (15+), то выбивает ошибку с кучами\стеками, которую я не понимаю. using namespace std; void rekursija(long long factorials, int ArSize); int main() { cout << "Pls enter the number: " << endl; int ArSize; cin >> ArSize; long long * factorials = new long long; подробнее

Показать сообщение отдельно
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
10.05.2013, 20:57  [ТС]
Toshkarik, Вы не правы, последовательность получается такая : 0 -2 2 -1 0 -2 2, да и ответ верен: c 3-й позиции в ровно 5 чисел, сумма = 1.

я уже давал ссылку Два указателя. Сложно, ссылка рабочая, туда доступ только из Саратова

Добавлено через 3 минуты
Toshkarik, я уже делал квадратичный алгоритм, он никак не пройдёт по времени с такими ограничениями!!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <vector>
 
using namespace std; 
 
const int NMAX = 5000000;
 
long long from1toi[NMAX+1];
 
int main(){
    int n, x, y, a, b, c, s;
    cin >> n >> x >> y >> a >> b >> c >> s;
    long long curb = s, cura, sum = 0;
    from1toi[0] = 0; 
    for (int i = 1; i <= n; i++){
        curb = (a * curb + b)%c;
        cura = x * curb + y;
        sum += cura;
        from1toi[i] = sum; 
    }
    for (int i = n; i >= 1; i--){
        for (int j = 1; j <= n-i+1; j ++){
            if (from1toi[j + i-1] - from1toi[j-1] > 0){
                cout << j << " " << i;
                return 0;
            }
        }
    }
    return 0;
}
Добавлено через 42 секунды
Toshkarik, послдний код, что я привёл работает всегда правильно, но по времени не укладывается в 0.5 секунды, потому что это лобовая реализация за О(n^2)

Добавлено через 1 минуту
а тут нужен алгоритм за О(n), ну может, в самом крайнем случае, если я что то не понял, то за О(Nlogn)

Добавлено через 11 минут
Toshkarik, кстати sum[ 0 ] = 0;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru