Ограничение времени 2 секунды Ограничение памяти 256Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Василиса Премудрая очень премудрая. Она собирает лекарственные растения для приготовления чая и отваров. Для того, чтобы польза от этих растений была максимальной, необходимо соблюдать волшебные правила. Для каждого из N растений есть оптимальный день его сбора Ai . Для приготовления волшебного эликсира все растения нужно собрать в один день X. При этом волшебная сила растения в этот день меньше, чем в оптимальный, на Василисе Премудрой найти такой день X, чтобы суммарное уменьшение волшебной силы, равное
было минимальным.
Формат ввода
Первая строка входных данных содержит целое число: N (1 ≤ N ≤ 105) – количество растений, на следующей строке расположены N чисел Ai (1 ≤ Ai ≤ 106) для каждого растения. Все числа в строке отделены друг от друга одним пробелом.
Формат вывода
Выведите одно целое число – X.
Если таких значений несколько – выведите меньшее.
#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;
}
#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;
}
Объяснение: