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

Простенькая задачка из Timus Online Judge(1005. Куча камней) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обучиться и самому написать толковый клиент\программу http://www.cyberforum.ru/cpp-beginners/thread355658.html
Здравствуйте нужно как можно быстрее обучиться языкам для написания программы. Она должна работать только по интернету. Что мне для этого нужно знать ? SQL, C++ ?.. Можно ли объединять в одной...
C++ Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. Подсчитать количество слов и определить и вывести на экран максимальное и минимальное слова и их длину. Помогите написать...срочно очень нужно... есть фотография этой проги нужно ее... http://www.cyberforum.ru/cpp-beginners/thread355655.html
C++ Подсчитать средний код всех выведенных на экран символов
Написать программу, которая: - выводит на экран перечень городов в виде столбца, первые буквы строк которого составляют фамилию студента (буквы ‘ы’, ‘ь’, и ‘ъ’ фамилии исключаются); -...
Игра в города C++
Нужно реализовать в С++ Игра в города Условие задачи: Всем известны правила игры "в города": первый игрок называет произвольный город, следующий - город, название которого начинается на ту же...
C++ не выполнимое задание http://www.cyberforum.ru/cpp-beginners/thread355610.html
Задайте две таблицы. Одна содержит наименование услуг, а другая – расценки за эти услуги. Удалите из обеих таблиц все строки, которые предшествуют услуге, цена которой Р рублей. Даже не знаю как...
C++ Циклы и двумерные массивы 1. Цикл For... Среди всех n-значных чисел (n = 1,2,3,4) указать те, сумма цифр которых равна данному числу k. 2. двумерные массивы Дана целочисленная квадратная матрица. Найти в каждой строке... подробнее

Показать сообщение отдельно
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1

Простенькая задачка из Timus Online Judge(1005. Куча камней) - C++

24.09.2011, 00:44. Просмотров 6277. Ответов 18
Метки (Все метки)

Собственно условие: http://acm.timus.ru/problem.aspx?space=1&num=1005
Моё решение:
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
#include <iostream>
using namespace std;
void main() 
{
    long int N = 0, A = 0, *W, *W1, *W2, a_buf1 = 0, a_buf2 = 0, buff = 0;
    cin >> N;
    W  = new long int[N];
    W1 = new long int[N];
    W2 = new long int[N];
    for(int i = 0; i < N; ++i) W[i] = W1[i] = W2[i] = 0;
    for(int i = 0; i < N; ++i) cin >> W[i];
    buff = N / 2;
    for(int i = 0; i < buff; ++i)
    {
        W1[i] = W[i];
    }
    for(int i = buff, j = 0; i < N; ++i, ++j)
    {
        W2[j] = W[i];
    }
    int b = N, i1 = 0, i2 = 0, buf = 0, buf2 = 0;
    while (b > 0)
    {
        a_buf1 = 0;
        a_buf2 = 0;
        for(int i = 0; i < N; ++i) {if((W1[i] != -1) && (W1[i]))a_buf1 += W1[i];}
        for(int i = 0; i < N; ++i) {if((W2[i] != -1) && (W2[i]))a_buf2 += W2[i];}
        if (a_buf1 > a_buf2)
        {
            A = a_buf1 - a_buf2;
            for(int i = 0; W1[i] != 0; ++i)
            {
                if ((W1[i] < A) && W1[i] != -1)
                {
                    i2 = 0;
                    buf = W1[i];
                    W1[i] = -1;
                    while ((W2[i2] != 0) && (i2 < N)){i2++;}
                    W2[i2] = buf;
                    A = buf;
                }
            }
        }
        else if (a_buf1 < a_buf2)
        {
            A = a_buf2 - a_buf1;
            for(int i = 0; W2[i] != 0; ++i) 
            {
                if ((W2[i] < A) && W2[i] != -1)
                {
                    i1 = 0;
                    buf = W2[i];
                    W2[i] = -1;
                    while ((W1[i1] != 0) && (i1 < N)){i1++;}
                    W1[i1] = buf;
                    A = buf;
                }
            }
        }
        else
        {
            A = 0;
            break;
        }
        --b;
    }
    cout << A << endl;  
}
Проблема в том, что не взирая на получаемый правильный результат он-лайн проверка выдаёт Wrong answer.
В чём моя ошибка? Или это их глюк?(и то и то на мой взгляд равновероятно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru