Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.
Внимание! Некоторое время письма не доходят до аккаунтов MAIL RU GROUP, не доходят на все почтовые ящики mail.ru, inbox.ru, bk.ru. Пишите им жалобы, чтобы быстрее восстановили получение писем, регистрируйтесь через яндекс почту и gmail, туда письма с активизацией доходят.

Вернуться   Форум программистов > C++ > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 06.12.2018, 20:17   #1
ДимаПрограммер
Новичок
 
Регистрация: 06.12.2018
Сообщений: 1
Репутация: 10
По умолчанию Нужна срочная помощь!

Добрый вечер всем! Сегодня столкнулся с решением одной задачи, есть наброски, но она работает не корректно.
--
По дороге в школу Маша смотрела в окно из троллейбуса и заметила, что в ее родном городе, оказывается, очень много фонарных столбов. А именно, она насчитала N столбов с высотами Ai. Маша считает, что отрезок из подряд идущих столбов является красивым, если высота первого и последнего столба в этом отрезке отличается.

Ехать было очень долго, поэтому Маше стало скучно. Ей стало интересно, сколько же в ее городе есть красивых отрезков.

Формат ввода
В первой строке содержится одно целое число N (1 ≤ N ≤ 200 000) Во второй строке - N целых чисел Ai (0 ≤ Ai ≤ 1 000 000 000), разделенных пробелами - высоты столбов.
---
Примечания
В первом примере Маша может выбрать любые два столба. Отрезок между ними будет красивым, потому что высота первого и последнего столба будет отличаться.
---
В примере ей подходит только 4 отрезка (выделены скобочками):
(2 3) 2 3, (2 3 2 3), 2 3 (2 3) и (2 3 2 3)

Код:

#include "pch.h"
#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	ifstream file;
	file.open("input.txt");
	string zn[10000];
	char simble;
	int a = 0, c = 0, b = 0, g = 0, f = 0;
	while (!file.eof()) {
		file >> zn[c];
		c++;
		cout << zn[c];
	}
	for (b = 1; b < c; b++) {
		for (f = b + 1; f < c; f++) {
			cout << zn[b];
			cout << zn[f];
			if (zn[b] != zn[f]) {
				g++;
				cout << "+";
			}
			cout << "\n";
		}
	}
	file.close();
	ofstream output;
	output.open("output.txt");
	output << g;
	cout << "---";
	cout << g;
	output.close();

}

Ещё одни наброски:
Код:

#include <iostream>
#include <fstream>
#include <string>

using namespace std;
int main()
{
	setlocale(LC_ALL, "rus");
	ifstream file;
	file.open("input.txt");
	string zn[100];
	char simble;
	int a = 0, c = 0, b = 0, g = 0, f = 0;
	while (file.get(simble)) {
		a++;
		if (a > 2) {
			zn[c] = simble;
			if (a & 1) {
				c++;
			}
		}
	}
	for (b = 1; b < c; b++) {
		for (f = b + 1; f <= c; f++) {
			if (zn[b] != zn[f]) {
				g++;
			}
		}
	}
	if (c%2==0) {
		g = g - 1;
	}


	file.close();
	ofstream output;
	output.open("output.txt");
	output << g;
	cout << g;
	output.close();

}

Вот такие вот задачки...
ДимаПрограммер вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна срочная помощь world12_tk Общие вопросы C/C++ 1 24.02.2009 21:49
Нужна срочная помощь!!! Михей Фриланс 5 26.04.2008 17:19


10:12.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru