Я получаю ошибку времени выполнения.
Вам даны два массива A и B, каждый из которых содержит N чисел. Вам нужно выбрать ровно одно число из A и ровно одно число из B таким образом, чтобы индекс двух выбранных чисел не был одинаковым, а сумма 2 выбранных значений была минимальной. Формально, если вы выбрали I-й элемент из A, значение которого равно x, и j-й элемент из B, значение которого равно y, вам нужно минимизировать значение (x+y) таким образом, чтобы i не было равно j.
Ваша задача-найти это минимальное значение.
Ввод:
Первая строка входных данных содержит целое число, обозначающее тестовые случаи, т. Первая строка каждого теста содержит целое число N, обозначающее размер двух массивов. Тогда каждая из следующих двух строк содержит N целых чисел, разделенных пробелами, обозначающих значения массива A[] и B[] соответственно.
Выход:
Выведите минимальную сумму, которая может быть получена при условиях, указанных в постановке задачи.Если это невозможно, выведите "-1" без кавычек.
Ограничения:
1<=T<=30
1<= N <=100000
1< =элементы массива < =100000
Пример:
Ввод:
1
5
5 4 3 2 1
1 2 3 4 5
Выход:
2
Объяснение:
Минимальная сумма будет получена путем выбора числа в последнем индексе первого массива, т. е. 5-го элемента первого массива(1), и первого индекса второго массива, т. е. первого элемента второго массива (1).
Сумма=1+1=2, так как их индексы различны, но сумма минимальна.
Что я уже пробовал:
#include int main() { int t,i,j,k,min=0; //# of test cases scanf("%d",&t); struct testcase { int sizeOfArray; int a[10]; int b[10]; int ans; }; struct testcase tc[t]; //array of structures, size t for(i=0;i<t;i++) { scanf("%d",&tc[i].sizeOfArray); //entering size of a and b for(j=0;j<tc[i].sizeOfArray;j++) //entering elements of a { scanf("%d",&(tc[i].a[j])); } for(j=0;j<tc[i].sizeOfArray;j++) //entering elements of b { scanf("%d",&tc[i].b[j]); } } int no=0; for(k=0;k<t;k++) { min= tc[k].a[0]+tc[k].b[1]; for(i=0;i<tc[k].sizeOfArray;i++) { for(j=0;(j<tc[k].sizeOfArray);j++) { if((tc[k].a[i]+tc[k].b[j]<min)&&(j!=i)) { min=tc[k].a[i]+tc[k].b[j]; } } } tc[k].ans=min; printf("%d\n",min); } return 0; }
//Поскольку это дает правильные результаты в моей системе, но я получаю ошибку времени выполнения во время / / отправки этого кода
jeron1
struct testcase tc[t]; / / массив структур, размер t
Это выглядит неправильно, массив с переменным количеством записей нужно было бы создавать динамически с помощью malloc () или чего-то подобного.