На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Задача, на мій погляд дуже проста: пошук найбільшого елемента (та його індекса) в числовому масиві, хоча завуальована до неможливості.
#include <iostream> using namespace std; int main() { int N; cin >> N; int *M = new int [N]; for(int i=0; i<N; i++) cin >> M[i]; int max=M[0], index=0; for(int i=0; i<N; i++) if (M[i]>max) { max=M[i]; index=i; } cout << max+1 << " " << index+1; return 0; }
Відредаговано LVV (2015-11-12 16:35:49)
Поза форумом
skmg написав:
викинути масив та шукати максимум безпосередньо у вхідному потоці?
Але і в такому випадку маємо лише 19 балів
Журі вже виправилося, майже в усіх 20 балів. (змінив своє попереднє повідомлення)
Хоча навіть один бал вартий того, щоб викинути масив.
Відредаговано LVV (2015-11-12 16:38:50)
Поза форумом
цікаво, повторна перевірка вручну натестах дає "Набрано баллов: 20 из 20."
А в результатах 19.
Масви ніякі не використовувалися.. поточне читання в змінну.. і перевірка на максимум((
Поза форумом
#include <iostream>
using namespace std;
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(0);
size_t n, ans(0), ans_idx, tmp;
cin >> n;
for(size_t i = 0; i < n; ++i)
{
cin >> tmp;
if(tmp > ans)
ans = tmp, ans_idx = i;
}
cout << ans+1 << ' ' << ans_idx+1 << '\n';
return 0;
}
Чому цей розв'язок дає на одному тесті неправильну відповідь?
Поза форумом
Потому что не учтен случай, когда ни одного кабеля не проложено. Надо ans=-1 инициализировать.
Відредаговано andervish (2015-11-13 01:42:32)
Поза форумом
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
int *a = new int[n];
cin >> a[0];
int max = a[0];
for (int i = 1; i < n; i++){
cin >> a[i];
if (max < a[i]){
max = a[i];
}
}
for (int i = 0; i < n; i++){
if (a[i] = max){
cout << max + 1 << " " << i + 1 << endl;
return 0;
}
}
return 0;
}
Що тут є неправильного?
Поза форумом
Mobivlad написав:
Що тут є неправильного?
1) Основна помилка в умові, яка в другому циклі:
if (a[i] = max){
на С++ для перевірки умови треба писати ==. А ти просто присвоїв першому ж елементу масиву значення max.
В тебе проходили тільки ті тести, де правильною відповіддю була школа №1
2) Це не вплинуло на правильність роботи програми, але разом з тим:
using namespace std;
В цьому просторі імен оголошений макрос max, який вертає максимум із двох змінних. Хоч компілятор і зрозумів, що ти маєш на увазі локальну змінну, а не макрос із std, але краще змінні так не називати.
Більшість IDE підсвічують слово max не як змінну, а як зарезервоване слово мови С++. Це як мінімум незручно.
Поза форумом