Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace csavarkeszlet
- {
- class Program
- {
- static void Main(string[] args)
- {
- StreamReader sr = new StreamReader(args[0]);
- String line;
- while ((line = sr.ReadLine()) != null)
- {
- String[] tokens = line.Split(' ');
- int sor = int.Parse(tokens[0]);
- int oszlop = int.Parse(tokens[1]);
- int anya = 0;
- String[] t = new String[sor];
- int[] szamok = new int[100000];
- for (int i = 0; i < sor; i++)
- {
- t[i] = sr.ReadLine();
- }
- for (int i = 0; i < sor; i++)
- {
- for (int j = 0; j < oszlop; j++)
- {
- if ((t[i][j]) == 'O')
- {
- anya++;
- String temp = t[i].Substring(0, j) + '.' + t[i].Substring(j + 1);
- t[i] = temp;
- }
- if ((t[i][j]) == '*')
- {
- String temp = t[i].Substring(0, j) + '.' + t[i].Substring(j + 1);
- t[i] = temp;
- int k = i;
- int l = j;
- int hossz = 0;
- //bal
- while (l > 0 && t[k][l - 1] == '-')
- {
- l--;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (l == 0 || t[k][l - 1] != '-'))
- {
- szamok[hossz]++;
- //System.out.println("bal:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //jobb
- while (l < oszlop - 1 && t[k][l + 1] == '-')
- {
- l++;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (l == oszlop - 1 || t[k][l + 1] != '-'))
- {
- szamok[hossz]++;
- //System.out.println("jobb:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //fel
- while (k > 0 && t[k - 1][l] == '|')
- {
- k--;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (k == 0 || t[k - 1][l] != '|'))
- {
- szamok[hossz]++;
- //System.out.println("fel:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //le
- while (k < sor - 1 && t[k + 1][l] == '|')
- {
- k++;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (k == sor - 1 || t[k + 1][l] != '|'))
- {
- szamok[hossz]++;
- //System.out.println("le:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //bal fel atlo
- while ((l > 0 && k > 0) && t[k - 1][l - 1] == '\\')
- {
- l--;
- k--;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (l == 0 || k == 0 || t[k - 1][l - 1] != '\\'))
- {
- szamok[hossz]++;
- //System.out.println("balfel:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //bal le atlo
- while ((l > 0 && k < sor - 1) && t[k + 1][l - 1] == '/')
- {
- l--;
- k++;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && (l == 0 || k == sor - 1 || t[k + 1][l - 1] != '/'))
- {
- szamok[hossz]++;
- //System.out.println("balle:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //jobb fel atlo
- while ((l < oszlop - 1 && k > 0) && t[k - 1][l + 1] == '/')
- {
- l++;
- k--;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && ((l == oszlop - 1 || k == 0) || t[k - 1][l + 1] != '/'))
- {
- szamok[hossz]++;
- //System.out.println("jobbfel:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- //jobb le atlo
- while ((l < oszlop - 1 && k < sor - 1) && t[k + 1][l + 1] == '\\')
- {
- l++;
- k++;
- hossz++;
- String tmp = t[k].Substring(0, l) + '.' + t[k].Substring(l + 1);
- t[k] = tmp;
- if (hossz > 0 && ((l == oszlop - 1 || k == sor - 1) || t[k + 1][l + 1] != '\\'))
- {
- szamok[hossz]++;
- //System.out.println("jobble:"+hossz);
- hossz = 0;
- k = i;
- l = j;
- break;
- }
- }
- }
- }
- }
- Console.Write(anya);
- for (int i = 0; i < szamok.Length; i++)
- if (szamok[i] > 0)
- Console.Write(" " + i + ":" + szamok[i]);
- Console.WriteLine("");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement