Ciao a tutti! Sto cercando di scrivere un programmino che riceva in input un array, lo stampi a video, riconosca se ci sono elementi uguali nell'array e comunichi se questo avviene o meno.

codice:
#include<stdio.h>
#define N 2

int main () {
     int ar[N*N];
     int i, j;
     int flag;

     for(i=0; i<=(N*N)-1; i++){
     printf("\nInserire un numero intero (%d interi restanti): ", (N*N)-i);
     scanf("%d", &ar[i]);
     }

     printf("\n");
     for(i=0; i<=(N*N)-1; i++)
     printf("%d ", ar[i]);
     printf("\n");

     for(i=0; i<=(N*N)-1; i++) {
          for(j=i++; j<=(N*N)-1; j++)
          if(ar[i]==ar[j])
               flag=1;
          if(ar[i]!=ar[j])
               flag=0;
     }

     if(flag==1)
          printf("\nCi sono elementi ripetuti!\n");
     if(flag==0)
          printf("\nNon ci sono elementi ripetuti!\n");

     return 0;
}
Sorge questo problema (tenendo presente che in questo caso N=2):
-se inserisco interi tutti diversi, il programma mi riconosce giustamente che non ci sono elementi ripetuti;
-se inserisco un massimo di 2 interi uguali sul totale di 4, mi riconosce giustamente che ci sono elementi ripetuti;
-se inserisco 3 o più interi uguali, mi comunica che non ci sono elementi ripetuti!!

Ho provato anche a sostituire questo pezzo di codice
codice:
for(i=0; i<=(N*N)-1; i++) {
     for(j=i++; j<=(N*N)-1; j++)
     if(ar[i]==ar[j])
          flag=1;
     if(ar[i]!=ar[j])
          flag=0;
}
con questo
codice:
for(i=0; i<=(N*N)-1; i++) {
     for(j=0; j<=(N*N)-1; j++)
     if(ar[i]==ar[j] && i!=j)
          flag=1;
     if(ar[i]!=ar[j] && i!=j)
          flag=0;
}
ma non è cambiato nulla, l'errore rimane lo stesso.

Mi sono incartata qui e non riesco a risolvere il problema!! e sì che credevo fosse un programmino semplice....

Vi ringrazio in caso abbiate tempo/voglia di darmi una mano!