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

Сортировка массива - олимпиадная задача - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ нахождение суммы и разницы векторов http://www.cyberforum.ru/cpp-beginners/thread904473.html
как найти сумму и разницу двух векторов заданные координатами. например первый вектор начало(5,3) конец(6,9) и второй вектор начало(6,3) конец(7,8) нужна формула что бы запрограммировать
C++ Зашифровать строку, поместив сначала все символы на четных местах, а затем, в обратном порядке, все симоволы на нечетных местах Дана строка. Зашифруваты ее, поместив сначала все символы на четных местах, а затем, в обратном порядке, все симоволом,коториє на нечетных местах (например строка "Программа" превратится в "ргамамроП") http://www.cyberforum.ru/cpp-beginners/thread904471.html
ребят, посоветуйте пожалуйста толковую литературу (работа с dll) C++
вопрос заключается с dll. хочу разобраться как dllка работает. подскажите пожалуйста книгу с примерами, заранее благодарен.
Осуществить циклический сдвиг элементов квадратной матрицы размерности MxN вправо на k элементов таким образом: C++
Осуществить циклический сдвиг элементов квадратной матрицы размерности MxN вправо на k элементов таким образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него — в последнюю строку справа налево, из нее — в первый столбец снизу вверх, из него — в первую строку; для остальных элементов — аналогично.
C++ С++ Разработать программу, в которой оформить функцию вычисления интеграла http://www.cyberforum.ru/cpp-beginners/thread904463.html
помогите написать программу,пожалуйста:cry:
C++ Описать структуру с именем NOTE (ФИО, номер телефон, дата рождения) Помогите пожалуйста: Описать структуру с именем NOTE, содержащую следующие поля: • фамилия, имя; • номер телефона; • день рождения (массив из трех чисел). 2. Написать программу, выполняющую следующие действия: • ввод с клавиатуры данных в массив, состоящий из восьми элементов тина NOTE; записи должны быть упорядочены по трем первым цифрам номера телефона; • вывод на экран информации о... подробнее

Показать сообщение отдельно
snyp
4 / 4 / 4
Регистрация: 11.06.2013
Сообщений: 27
17.06.2013, 16:52     Сортировка массива - олимпиадная задача
Помогите, пожалуйста, решить такую задачу:

Так как Т.В.С., М.И.М. и Г.Д.М. живут далеко от школы, то каждый день они вот
уже много лет как минимум два раза в день ездят на автобусах. В связи с этим у них
выработалась привычка составлять с помощью знаков арифметических действий и скобок
число 100 из номера билета. После того, как каждый из них приезжает домой, он достает
из карманов билеты, пишет на каждом из них текущую дату и складывает в шкаф. Их
родителям такое хранение билетов не нравится(зачем хранить мусор?), поэтому они
регулярно заставляют их выкидывать. Недавно один из участников первой команды
решил, перед тем, как выкинуть, отсортировать накопившиеся билеты по дате их
покупки. Но это оказалось не так легко, как казалось, потому что билетов было очень
много. Поэтому он обращается к вам за помощью.
Выходные данные:
В первой строке содержится число N – количество билетов(1<=N<=100000). Далее
записано N дат билетов, разделенных пробелами или символами перевода строки. Каждая
дата представляет собой четырехзначное число, первые две цифры которого означают
день покупки, а вторые две – ее месяц (например, 0309 – 3 сентября).
Выходные данные:
В каждой строке должны содержаться (по одному) отсортированные даты
приобретения билетов в том же формате, что и во входном файле.
Пример:
input
5 0203 0302
1512
0409 0101
output
0101
0302
0203
0409
1512

Задача из прошедшей олимпиады для школьников, дорешиваю, но никак на 100 баллов не тянет. Проверяющая система за нижеследующий код даёт 56 баллов из 100:
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>
 
using namespace std;
 
int main(){
    int n, i, j, c, o;
    int w[100000];
    int a[100000];
    cin>>n;
    for (i=1; i<=n; i++)
        cin>>a[i];
    for (i=1; i<=n; i++)
        w[i] = (a[i]/100)+(a[i]%100)*100;
    for (i=1; i<=n; i++)
        for (j=i; j<=n; j++)
            if (w[i]>w[j])
            {
                c=a[i];
                a[i]=a[j];
                a[j]=c;
                o=w[i];
                w[i]=w[j];
                w[j]=o;
            }
    for (i=1; i<=n; i++)
        if (a[i]<1000)
            cout<<0<<a[i]<<endl;
        else cout<<a[i];
    return 0;
}
Быть может, вы сможете её откорректировать? Или предложите свой вариант?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru