6 / 7 / 4
Регистрация: 17.09.2013
Сообщений: 337
1

Весы

12.01.2014, 20:43. Показов 701. Ответов 0
Метки нет (Все метки)

Помогите закончить программу.
Имя входного файла: sum.dat
Имя выходного файла: sum.sol
Ограничение времени: 1 с
Ограничение памяти: 64 M

После того, как Урфин Джюс овладел Изумрудным городом, у него появилось любимое занятие — взвешивание изумрудов. Для этого у него есть чашечные весы и набор из N гирь. На одну чашу весов Урфин кладет изумруд, а на другую — некоторые гири из набора так, чтобы чаши уравновесились.

К сожалению, набор гирь у Урфина таков, что ему удается взвесить далеко не все изумруды, которые у него есть. Один из таких изумрудов он решил подарить мудрому филину Гуамоко. Естественно, Урфин хочет отдать Гуамоко самый легкий из тех изумрудов, вес которых он не может определить с помощью своего набора гирь.

Определите, какого веса изумруд получит мудрый филин Гуамоко.
Формат входного файла sum.dat

Текстовый файл sum.dat состоит из двух строк. В первой строке записано натуральное число N — количество гирь, которые есть у Урфина Джюса (1 ≤ N ≤ 50).

В следующей строке через пробел записаны N натуральных чисел - веса гирь. Веса лежат в диапазоне от 1 до 1 000 000 000.

Вес любого изумруда не меньше 1.
Формат выходного файла sum.sol

Текстовый файл sum.sol должен содержать единственное число — минимальный вес, который нельзя уравновесить с помощью гирь из заданного набора.
Программа выглядит так.
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
71
72
73
74
75
#include <iostream>
#include <stdio.h>
 
using namespace std;
 
#define maxn 100
 
int a[maxn];
 
int n;
int pr = 0;
 
void merge(int l, int r) {
    if (r == l)
        return;
    if (r - l == 1) { 
        if (a[r] < a[l])
            swap(a[r], a[l]);
        return;
    }
    int m = (r + l) / 2;
    merge(l, m);
    merge(m + 1, r);
    int buf[maxn];
    int xl = l;
    int xr = m + 1;
    int cur = 0;
    while (r - l + 1 != cur) {
        if (xl > m) {
            buf[cur++] = a[xr++];
            pr++;
            }
        else if (xr > r) {
            buf[cur++] = a[xl++];
            pr++;
            }
        else if (a[xl] > a[xr]) {
            buf[cur++] = a[xr++];
            pr++;
            }
        else {
             buf[cur++] = a[xl++];
             pr++;
             }
 
    }
    for (int i = 0; i < cur; i++)
        a[i + l] = buf[i];
}
 
int main() {
    
     int N, i, j, mn = 0, pr = 0, c = 0;
    FILE *fp, *np;
    fp = fopen("sum.dat", "r");
    np = fopen("sum.sol", "w");
    fscanf(fp, "%d", &N);
    for(i = 0; i < N; i++) {
        fscanf(fp, "%d", &a[i]);
    }
    merge(0, N - 1);
while(mn == 0) {
    pr++;
    mn = pr;
    for(i = N - 1; i >= 0; i--) {
        if(mn >= a[i]) {
            mn = mn - a[i];
        }
    }
}
fprintf(np, "%d\n", pr);
fclose(fp);
fclose(np);
    return 0;
}
Добавлено через 32 секунды
Программа не прошла полностью на сервере.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.01.2014, 20:43
Ответы с готовыми решениями:

Весы
Напишите класс Balance для описания весов с двумя чашами. На левую и правую чашу объекта будут...

Электронные весы
Неплохие задачи по С++! Подзабыл его( выручайте, буду очень благодарен 4. Ваша задача - грамотно...

Нарисовать весы
помогите нарисовать! вообще не умею и не понимаю как это делать( рисунок не идеальный но...

Весы на iPhone с 3D Touch
Здравствуйте. Как реализовать весы на iPhone с 3D Touch на веб сайте?

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.01.2014, 20:43
Помогаю со студенческими работами здесь

Нарисовать весы с чашами
помогите зделать работу проболел половину пришёл на пары и ничего не понимаю... -_- Нужно сделать...

Графика. Анимированные весы
При выполнении программы возникают дефекты по ходу движения фигур. Конкретно, чашечки весов...

Весы напольные починяю.
Пытаюсь починить домашние напольные весы &quot;Korona&quot;. Раньше, чтобы они вышли из режима &quot;сна&quot; нужно...

Весы CAS AD и распиновка
Добрый день коллеги! Прошу помочь, Первый раз этим занимаюсь, а очень надо! Есть распиновка для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru