c语言 不会用数组做这个

有A、B、C、D和E共5所学校。在一次检查评比中,已知E校肯定不是第2名或第3名,他们互相进行推测,A校有人说,E校一定是第1名;B校有人说,我校可能是第2名;C校有人说,A校最差;D校有人说,C校不是最好的;E校有人说,D校会获得第1名。结果只有第1名和第2名的学校的人猜对了。编写一个程序求出这5所学校的名次。
编程要求
为了防止不同的学校取相同的名次,设立了一个数组x[],x[i]为0(假)表示已有某校取了第i名。


#include <cstdio>
int a[6];
int main()
{
 for (int a=1;a<=5;a++)
  for (int b=1;b<=5;b++)
   if (b!=a)
    for (int c=1;c<=5;c++)
     if (c!=a && c!=b)
      for (int d=1;d<=5;d++)
       if (d!=a && d!=b && d!=c)
        for (int e=1;e<=5;e++)
         if (e!=a && e!=b && e!=c && e!=d)
          {
           if (a==1 || a==2)
             if (e!=1) continue;
           if (b==1 || b==2)
             if (b!=2) continue;
           if (c==1 || c==2)
             if (a!=5) continue;
           if (d==1 || d==2)
             if (c==1) continue;
           if (e==1 || e==2)
             if (d!=1) continue;
           printf("A是第%d名 B是第%d名 C是第%d名 D是第%d名 E是第%d名\n",a,b,c,d,e);
           return 0;
          }
 return 0;
}