Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

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

Добрый вечер всем! Сегодня столкнулся с решением одной задачи, есть наброски, но она работает не корректно.
--
По дороге в школу Маша смотрела в окно из троллейбуса и заметила, что в ее родном городе, оказывается, очень много фонарных столбов. А именно, она насчитала 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();

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


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


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