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

Серьезная оптимизация - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В произвольном тексте вставить между вторым и третьим словом новое слово http://www.cyberforum.ru/cpp-beginners/thread699833.html
"В произвольном тексте вставить между вторым и третьим словом новое слово." Помоги пожалуйста)) С коментариями если можно для чайника)))
C++ Условие выводя ошибки Написать условие если у нас три строки а мы просим например пятую,то программа выдавала ошибку в сообщение#include <vcl.h> #include<stdio.h> #include<stdlib.h> #include<conio.h> #pragma hdrstop ... http://www.cyberforum.ru/cpp-beginners/thread699824.html
C++ Деструктор не вызывается
В одном классе я создаю объект, и если проверку не проходит, я его возвращаю в другой метод, дабы у меня там начало всех начал,Главное Меню void InputData(){ while(true){ ... Bank...
C++ Ошибка "неоднозначный вызов перегруженной функции"
#include "stdafx.h" #include <iostream> #include <conio.h> #include "math.h" using namespace std; int count(int a,int b) { return a/pow(10,b-1)%10;
C++ Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. http://www.cyberforum.ru/cpp-beginners/thread699804.html
Сортировка вставками. Дана последовательность чисел а1, а2, ..., аn. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть а1, а2, ..., аi —упорядоченная...
C++ Определить кольцо с центром в начале координат, которое содержит все точки В одномерном массиве с четным количеством элементов (2N) находятся координа-ты N точек плоскости. Они располагаются в следующем порядке: x1, y1, х2, у2, х3, у3, и т.д. Определить кольцо с центром в... подробнее

Показать сообщение отдельно
rus_phantom
6 / 6 / 1
Регистрация: 31.03.2011
Сообщений: 69

Серьезная оптимизация - C++

16.11.2012, 22:58. Просмотров 339. Ответов 5
Метки (Все метки)

Участвую в олимпиаде, уже придумал алгоритм который обязан работать, но к сожалению вылетаю по тайм_лимит. Алгоритм линейный, я уже не знаю как программу оптимизировать. Вот код:

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <vector>
#include <iostream>
//#include <cstdlib>
//#include <cstdio>
 
using namespace std;
 
typedef struct {
    int a,b;
}   mpair;
 
 
int main()
{
    //Читаем число
    int count;
    //scanf("%d",&count);   //C-style
    cin>>count;
 
    int max = (count+2)/3;
    //Отдельное условие на 1, если это не сделать то получу WA
    if (count==1) {
        cout<<0;
        //printf("0");      //C-Style
        return 0;
    }
 
    //mpair* res = (mpair*) malloc(20);//(sizeof(mpair)*max+19)/20);    //C-Style
    //size_t point=0;
    vector<mpair> v;
    for (int m=1;m<=max;m++){
        unsigned int to_del= 2*m-1;
        unsigned int a_a = count-m;
        unsigned int b_b = count+m-1;
        
        if (a_a%to_del==0) {
            mpair temp;
            temp.a=m; temp.b=a_a/to_del;
            if (temp.a>temp.b)
                //res[point++] = temp;                      //C_style
                v.push_back(temp);
        }
 
        to_del+=2;
        if (b_b%to_del==0) {
            mpair temp;
            temp.a=m; temp.b=b_b/to_del;
            if (temp.a<=temp.b)
                //res[point++] = temp;                      //C_style
                v.push_back(temp);
        }
    }
 
    size_t size = v.size();
    //cout<<point<<endl;                                //C-Style
    //printf("%d\n",size);
    //printf("%d\n",point);
    cout<<size<<endl;
 
    for (size_t i=0;i<size;i++) {
    //for (size_t i=0;i<point;i++) {
        //cout<<res[i].b<<" "<<res[i].a<<endl;
        //printf("%d %d\n",v[i].b,v[i].a);
        //printf("%d %d\n",res[i].b,res[i].a);
        cout<<v[i].b<<" "<<v[i].a<<endl;
    }
 
 
    return 0;
}
Можно ли это как нибудь оптимизировать?
Я уже и С ввод юзал и от векторов отказывался, не помогает, падает на числах больших
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru