Вывести школу которая заняла больше всего призовых мест
Полное задание: дан массив структур. На олимпиаде студенты заполняли анкеты: фамилию, номер школы, класс, занятое место. Напечатать списки школ, которые заняли призовые места. Вывести школу, занявшую больше всех призовых мест. Списки школ я вывела. Почему не работает проверка (чтоб одинаковые номера школ не выводились)? Чтоб получить лучшую школу, нашла суму(массив) занятых мест каждой. Отсортировала по убыванию массив сумм. И вывести школу с максимальной суммой. Помогите пожалуйста найти ошибку. Заранее спасибо)
#include <stdio.h>
#include <string.h>
struct student {
int roll;
char name[20];
int school;
char form[3];
int place;
}s[5];
int sum[5];
int main( ) {
int i; int max = 0;
for (i = 0; i < 5; ++i) {
s[i].roll = i + 1;
printf("\nFor roll number%d,", s[i].roll);
printf("Enter name of student: ");
scanf("%s", s[i].name);
printf("Enter number of school: ");
scanf("%i", &s[i].school);
printf("Enter form: ");
scanf("%s", s[i].form);
printf("Enter prize place (1,2,3): ");
scanf("%i", &s[i].place);
if (s[i].place>3) printf("This place is not prize");
sum[i] = 1;
}
printf("===========================================================================\n");
printf("\n \t List of schools numbers, which have prize places\n");
for (i = 0; i < 5; i++) {
if(s[i].place<=3 && (s[i].school !=s[i+1].school || s[i].school !=s[i+2].school || s[i].school !=s[i+3].school ||s[i].school !=s[i+4].school) ) {
printf( "%d) ", i + 1);
printf("%i \t", s[i].school);}
else
printf("\t");
}
for (i = 0; i < 5; ++i)
{
if(s[i].school ==s[i+1].school || s[i].school ==s[i+2].school || s[i].school ==s[i+3].school ||s[i].school ==s[i+4].school){
sum[i]++;
}
}
for (i = 0; i < 5; ++i)
{
for (int j = i + 1; j < 5; ++j)
{
if (sum[i] < sum[j])
{
int a = sum[i];
sum[i] = sum[j];
sum[j] = a;
}}
i=max;
}
printf("THE BEST SCHOOL\n");
for(i=0; i<5; i++){
if(i==max){
printf("%i", s[i].school);}}
return 0;
}