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); }
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; }