Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > 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


15:56.


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

RusProfile.ru


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