В
Все
М
Математика
О
ОБЖ
У
Українська мова
Х
Химия
Д
Другие предметы
Н
Немецкий язык
Б
Беларуская мова
М
Музыка
Э
Экономика
Ф
Физика
Б
Биология
О
Окружающий мир
У
Українська література
Р
Русский язык
Ф
Французский язык
П
Психология
О
Обществознание
А
Алгебра
М
МХК
Г
География
И
Информатика
П
Право
А
Английский язык
Г
Геометрия
Қ
Қазақ тiлi
Л
Литература
И
История
mikhuil
mikhuil
07.08.2021 23:12 •  Информатика

Ограничение времени 2 секунды Ограничение памяти 256Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Василиса Премудрая очень премудрая. Она собирает лекарственные растения для приготовления чая и отваров. Для того, чтобы польза от этих растений была максимальной, необходимо соблюдать волшебные правила. Для каждого из N растений есть оптимальный день его сбора Ai . Для приготовления волшебного эликсира все растения нужно собрать в один день X. При этом волшебная сила растения в этот день меньше, чем в оптимальный, на Василисе Премудрой найти такой день X, чтобы суммарное уменьшение волшебной силы, равное

было минимальным.
Формат ввода
Первая строка входных данных содержит целое число: N (1 ≤ N ≤ 105) – количество растений, на следующей строке расположены N чисел Ai (1 ≤ Ai ≤ 106) для каждого растения. Все числа в строке отделены друг от друга одним пробелом.

Формат вывода
Выведите одно целое число – X.

Если таких значений несколько – выведите меньшее.

Показать ответ
Ответ:
Yana18102001
Yana18102001
27.01.2023 19:48
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>

int main()  
  {
    SetConsoleCP(1251);      
    SetConsoleOutputCP(1251);  
 
int const n=3;
int mas[n][n];
int sum1, sum2;
bool magik;

for (int i=0; i<n; i++)
    for (int j=0; j<n; j++)
         {
           printf("mas[%d][%d] = ", i+1, j+1);
           scanf("%d",&mas[ i ][ j ]);
         }

printf("\nВведенная матрица:\n");
     for (int i=0; i<n; i++)
        {
             for (int j=0; j<n; j++)
                       {
                          printf("%d  ",mas[ i ][ j ]);
                       }
             printf("\n");
         }

sum1=0;
sum2=0;

for (int i = 0; i<n; i++)
     {
            sum1 += mas[ i ][ i ];
            sum2 += mas[ i ][ n-1-i ];
      }

printf("Сумма главной диагонали = %d\n", sum1);
printf("Сумма побочной диагонали = %d\n", sum2);

magik = true;
for (int i=0; i<n; i++)
    {
        if (sum1==sum2)
             {
                 sum2=0;
                 for (int j=0; j<n; j++)
                    {
                        sum2 += mas[ i ][ j ];
                     }
              } else  { magik=false; break; }
     }

if (magik==true)
     {
           for (int i=0; i<n; i++)    
               {
                   if (sum1==sum2)
                        {
                           sum2=0;
                           for (int j=0; j<n; j++)
                               {
                                   sum2 += mas[ j ][ i ];
                               }
                         }
                        else  { magik=false; break; }
                 }
       }

if (magik==true)
    printf("\nМатрица является магическим квадратом\n");  
else
    printf("\nМатрица не является магическим квадратом\n");

system("pause");
return 0;
}
0,0(0 оценок)
Ответ:
znatokchok
znatokchok
08.12.2022 20:19

#include <iostream>

#include <ctime>

using namespace std;

void Max(int*& arr, int& size, int& maxi)

{

int max = 1;

for (int i = 0; i < size; i++)

{

 if (arr[i] > max)

 {

  maxi = i;

  break;

 }

}

}

void Min(int*& arr, int& size, int& mini)

{

int min = 10000;

for (int i = 0; i < size; i++)

{

 if (arr[i] < min)

 {

  min = arr[i];

  mini = i;

 }

}

}

void main()

{

srand(time(0));

setlocale(LC_ALL, "ru");

int Sum = 0;

bool after = 0;

int Maxi = 1;

int Mini = 1;

int size = 1;

cout << "Укажите размер массива - ";

cin >> size;

cout << endl;

int* arr = new int[size];

for (int i = 0; i < size; i++)

{

 arr[i] = 1 + rand() % 40;

 cout << arr[i] << "  ";

}

Max(arr, size, Maxi);

Min(arr, size, Mini);

if (Maxi > Mini)

 bool after = 1;

if (after)

{

 cout << "\n\nМаксимальный эл-т встречается после минимального\n";

 for (int i = Mini + 1; i < Maxi; i++)

 {

  Sum += arr[i];

 }

}

for (int i = Maxi + 1; i < Mini; i++)

{

 Sum += arr[i];

}

delete[]arr;

cout << "\nСумма = " << Sum << endl;

 

}

Объяснение:

0,0(0 оценок)
Популярные вопросы: Информатика
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота