Codi de programa


public class TresEnters {


       // DECLARACIO DE LA TUPLA!!
       public static class resultat {
              boolean trobat;
              int cont;
       }
       // FI DE DECLARACIO!!

       private static inout io = new inout();

       public static void main(String args[]) throws Exception {

              int t1[] = io.read_int_array();
              int t2[] = io.read_int_array();

              resultat r = CercaTriple(t1, t2);

              io.writeln(r.trobat);
              io.writeln(r.cont);

       }

       public static resultat CercaTriple(int T[], int T2[]) {

              /* {Pre: N és el nombre de components de T, N >=3, els elements de T2 són tots diferents}
              * {Post: s.trobat => existeixen tres elements consecutius de T iguals als de T2 i s.cont és el nombre de
              * vegades que T2 està en T; no s.trobat => T2 no està en T} */

              int i;
              boolean hies;

              resultat s = new resultat();

              s.trobat = false;
              s.cont = 0;

              i = 0;
              // {Inv: 0 <= i <= N-2, s.trobat => T2 està en T, s.cont=nombre de cops que T2 està en T}
              while (i <= T.length - 3) {
                     hies = TresIguals(T, i, T2);
                     if(hies) {
                            i = i + 3;
                            s.cont = s.cont + 1;
                            s.trobat = true;
                     } else {
                            i = i + 1;
                     }
              }

              return s;

       }

       public static boolean TresIguals (int T1[], int i, int T2[]) {

              /* {Pre: 0<= i <=N-3}
              * {Post: trobat <==> les tres components de T1 a partir de i són iguals a les de T2} */

              boolean trobat;

              trobat = (T1[i] == T2[0] && T1[i + 1] == T2[1] && T1[i + 2] == T2[2]);
              return trobat;

       }

}
Enrera