| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using System;
- using System.IO;
- namespace D5._1
- {
- class Program
- {
- static void Main(string[] args)
- {
- if (args.Length < 1) return;
- if (File.Exists(args[0]) == false) return;
- var file = File.OpenText(args[0]);
- string polymer = file.ReadLine();
- reduce(ref polymer);
- Console.WriteLine(polymer.Length);
- }
- static void reduce(ref string polymer)
- {
- for (int i = 1; i < polymer.Length; i++)
- {
- char cc = polymer[i];
- char cm = polymer[i-1];
- if (Math.Abs(cc - cm) <= 26) continue;
- if (up(cc) == up(cm))
- {
- polymer = polymer.Remove(i - 1, 2);
- i = Math.Max(0, i - 2);
- }
- }
- }
- static char up(char c)
- {
- if (c >= 'A' && c <= 'Z') return c;
- return (char) ('A' + (c - 'a'));
- }
- }
- }
|