Esempio n. 1
0
        public int solution(int N, string S, string T)
        {
            int cap = N * N / 4;

            quoter[] q = new quoter[4] {
                new quoter(cap), new quoter(cap), new quoter(cap), new quoter(cap)
            };

            var sum = 0;

            var ind = 0;

            while (ind < S.Length)
            {
                int qw_ind = GetQuoterInd(S, N, ref ind);
                q[qw_ind].seat--;
            }
            ind = 0;
            while (ind < T.Length)
            {
                int qw_ind = GetQuoterInd(T, N, ref ind);
                q[qw_ind].dwarf++;
            }

            int min_seat = Math.Min(q[0].seat, q[3].seat);

            if (min_seat < q[0].dwarf || min_seat < q[3].dwarf)
            {
                return(-1);
            }
            sum += min_seat - q[0].dwarf;
            sum += min_seat - q[3].dwarf;

            min_seat = Math.Min(q[1].seat, q[2].seat);

            if (min_seat < q[1].dwarf || min_seat < q[2].dwarf)
            {
                return(-1);
            }
            sum += min_seat - q[1].dwarf;
            sum += min_seat - q[2].dwarf;

            return(sum);
        }
Esempio n. 2
0
        public int solution(int N, string S, string T)
        {
            int cap = N * N / 4;
            quoter[] q = new quoter[4] { new quoter(cap), new quoter(cap), new quoter(cap), new quoter(cap) };

            var sum = 0;

            var ind = 0;
            while (ind < S.Length)
            {
                int qw_ind = GetQuoterInd(S, N, ref ind);
                q[qw_ind].seat--;
            }
            ind = 0;
            while (ind < T.Length)
            {
                int qw_ind = GetQuoterInd(T, N, ref ind);
                q[qw_ind].dwarf++;
            }

            int min_seat = Math.Min(q[0].seat, q[3].seat);

            if (min_seat < q[0].dwarf || min_seat < q[3].dwarf)
            {
                return -1;
            }
            sum += min_seat - q[0].dwarf;
            sum += min_seat - q[3].dwarf;

            min_seat = Math.Min(q[1].seat, q[2].seat);

            if (min_seat < q[1].dwarf || min_seat < q[2].dwarf)
            {
                return -1;
            }
            sum += min_seat - q[1].dwarf;
            sum += min_seat - q[2].dwarf;

            return sum;
        }