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

Найти медианы на всех префиксах последовательности X длины n и вывести их сумму - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Требуется идентификатор, исправить ошибки http://www.cyberforum.ru/cpp-beginners/thread1242149.html
Помогите, пожалуйста, исправить ошибки. class rus_codecvt : public std::codecvt<char, char, std::mbstate_t> { protected: virtual result do_in(std::mbstate_t&, const char* from, const char* from_end, const char*& from_next, char* to, char* to_limit, char*& to_next ) const { const int i = std::min(to_limit - to, from_end - from); OemToCharBuff(from, to, i); from_next = from +...
C++ Написать небольшую прогу, которая понимает изменился ли бинарный файл или нет Мне нужно написать небольшую прогу, которая понимает изменился ли бинарный файл или нет. #include <windows.h> #include <string> #include <iostream> #include <fstream> int main(int agrc, char** argv) { std::string fileName = "C:/GameDev/Safty Code challenger/OriginalFiles/house_24.bin"; HFILE hFile; http://www.cyberforum.ru/cpp-beginners/thread1242084.html
C++ Приостановить выполнение цикла до совершения какого-то действия
Я пишу дурака. Нужно, чтобы действия походить, отбиться, подкинуть и т.д. происходили до того момента, пока кол-во карт в отбое не будет равно 36. Проблема в том, что программа зацикливается на этом моменте:do { Go(); Defence(); Throw_Card(); //... } while (retreat.Count < 36); я хочу на время приостановить выполнение этого цикла, пока количество карт,...
C++ Порекомендуйте библиотеку для работы с большими числами
Добрый день. Нужна библиотека для работы с большими числами, в которой определены следующие операции: умножение, деление, разность, сумма, деление с остатком. Какую библиотеку можете порекомендовать?
C++ Конвертирование из std::tcstring в TCHAR http://www.cyberforum.ru/cpp-beginners/thread1241941.html
Всем привет! Нужно перевести строку из std::tcstring в TCHAR. Как то сделать? пробовал через функцию .c_str() - не помогло
C++ Как правильно сделать методы создания и удаления объектов в классах SymbString и DecString Задача: Написать программу, демонстрирующую работу с объектами двух типов: SymbString и DecString, для чего создать систему соответствующих классов. Каждый объект должен иметь идентификатор (в виде произвольной строки символов) и одно или несколько полей для хранения состояния объекта (один класс является потомком другого). Клиенту (функции main) должны быть доступны следующие основные... подробнее

Показать сообщение отдельно
SlavaSSU
213 / 158 / 44
Регистрация: 17.07.2012
Сообщений: 580
13.08.2014, 19:56     Найти медианы на всех префиксах последовательности X длины n и вывести их сумму
так проверь:

C++ (Qt)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#pragma comment(linker, "/STACK:167177216")
 
#include <stdio.h>
#include <stack>
#include <math.h>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <string.h>
#include <string>
#include <memory.h>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <time.h>
#include <cassert>
#include <cstring>
//#include <unordered_set>
 
using namespace std;
 
#define mp make_pair
#define pb push_back
#define pii pair<int, int>
#define forn(i, n) for(int i = 0; i < (int)(n); i++)
#define x first
#define y second
 
typedef long long li;
typedef long double ld;
typedef unsigned long long uli;
 
const int INF = 1e9;
const ld eps = 1e-9;
const li MOD = (li)(INF + 7);
const li INF64 = (li)(INF) * (li)(INF);
 
const int ddx[] = {-1, 1, 1, -1};
const int ddy[] = {1, 1, -1, -1};
const int dx[] = {-1, -1, 0, 1, 1, 1, 0, -1};
const int dy[] = {0, 1, 1, 1, 0, -1, -1, -1};
const int dx4[] = {-1, 0, 1, 0};
const int dy4[] = {0, 1, 0, -1};
const int dxh[] = {-1, -1, -1, 1, 1, 1, 1, -1};
const int dyh[] = {1, -1, -1, -1, -1, 1, 1, 1};
const string dirs[] = {"RIGHT", "UP", "LEFT", "DOWN"};
 
bool in(int i, int j, int n, int m)
{
    return i >= 1 && i <= n && j >= 1 && j <= m;
}
 
int a[111111];
 
int main()
{
    //freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    //freopen("errors.txt", "w", stderr);
    //ios_base::sync_with_stdio(false);
    multiset<int> small, big;
    int sz1 = 0, sz2 = 0;
 
    int n;
    scanf("%d", &n);
    for(int i = 1; i <= n; i++)
        scanf("%d", &a[i]);
 
    for(int i = 1; i <= n; i++)
    {
        if(i == 1)
            small.insert(a[i]), sz1++;
        else
        {
            int mx_small = *small.rbegin();
            if(a[i] <= mx_small)
                small.insert(a[i]), sz1++;
            else
                big.insert(a[i]), sz2++;
        }
 
        int cnt = i;
        int SZ1 = (cnt + 1) / 2;
        int SZ2 = cnt - SZ1;
 
        while(sz1 > SZ1)
        {
            multiset<int>::iterator it = small.end();
            it--;
            int val = *it;
            big.insert(val);
            small.erase(it);
            sz1--;
            sz2++;
        }
 
        while(sz1 < SZ1)
        {
            multiset<int>::iterator it = big.begin();
            int val = *it;
            small.insert(val);
            big.erase(it);
            sz1++;
            sz2--;
        }
 
        assert(sz1 - sz2 <= 1);
 
        printf("answer for prefix %d == %d\n", i, *small.rbegin());
    }
    return 0;
}
 
Текущее время: 16:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru