Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- class Nice {
- static string[] lines;
- static int getMn(int ind)
- {
- int res = 0;
- //246
- //6
- //64
- //642 oh no... fixing..
- int mn = 1;
- for(int i = ind; i>=0; i--)
- {
- if (Char.IsDigit(lines[1][i]))
- res += (int)((int)lines[1][i] - (int)'0') * mn;
- else
- break;
- mn *= 10;
- }
- return res;
- }
- static void Main(string[] args) {
- lines = File.ReadAllLines("input.txt");
- StreamWriter sw = new StreamWriter("output.txt");
- List<int> plus = new List<int>();
- List<int> minus = new List<int>();
- List<int> signs = new List<int>();
- int a = int.Parse(lines[0]);
- for (int i = 2; i < lines[1].Length; i++)
- {
- if(lines[1][i] == 'a' && lines[1][i-1] == '+' && lines[1][i-2] == '+' || lines[1][i] == '+' && lines[1][i - 1] == '+' && lines[1][i - 2] == 'a')
- {
- bool before = lines[1][i] == 'a';
- int slag = 1;
- if(i > 3)
- if(lines[1][i-3] == '*')
- slag = getMn(i - 4); //a++
- //sw.WriteLine(slag + " SLAG ");
- if (signs.Count > 0)
- {
- if (signs[signs.Count - 1] == 1)
- plus.Add(before ? slag : -slag);
- else
- minus.Add(before ? slag : -slag);
- } else
- plus.Add(before ? slag : -slag);
- if (i < lines[1].Length - 1)//сомнительное условие
- signs.Add(lines[1][i + 1] == '+' ? 1 : 0);
- }
- }
- int res = 0;
- //Todo correct sorting
- //Сначала все обычные единицы
- //потом минус единицы(где ++a)
- plus = plus.OrderBy(x => Math.Abs(x)).ToList();
- minus = minus.OrderBy(x => Math.Abs(x)).ToList();
- int ii = 0;
- int ij = plus.Count - 1;
- int ji = 0;
- int jj = minus.Count - 1;
- bool p = false;
- while (ii <= ij || ji <= jj)
- {
- if (a >= 0)
- {
- if(ji <= jj)
- {
- if (p) sw.Write(minus[jj] + " m ");
- if (minus[jj] > 0)
- {
- if (p) sw.Write((a + 1) + " AA ");
- res = res - (a + 1) * minus[jj];
- if (p) sw.WriteLine((a + 1) * minus[jj]);
- }
- else
- {
- if (p) sw.Write((a) + " AA ");
- res = res - (-a) * minus[jj];
- if(p) sw.WriteLine(-a * minus[jj]);
- }
- jj--;
- } else
- {
- if (p) sw.Write(plus[ii] + " p ");
- if (plus[ii] > 0)
- {
- if (p) sw.Write((a + 1) + " AA ");
- res = res + (a + 1) * plus[ii];
- if (p) sw.WriteLine((a + 1) * plus[ii]);
- }
- else
- {
- if (p) sw.Write((a) + " AA ");
- res = res + (-a) * plus[ii];
- if (p) sw.WriteLine(-a * plus[ii]);
- }
- ii++;
- }
- } else
- {
- if (ji <= jj)
- {
- if (p) sw.Write(minus[jj] + " m ");
- if (minus[jj] > 0)
- {
- if (p) sw.Write((a + 1) + " AA ");
- res = res - (a + 1) * minus[jj];
- if (p) sw.WriteLine((a + 1) * minus[jj]);
- }
- else
- {
- if (p) sw.Write((a) + " AA ");
- res = res - (-a) * minus[jj];
- if (p) sw.WriteLine(-a * minus[jj]);
- }
- jj--;
- }
- else
- {
- if (p) sw.Write(plus[ii] + " p ");
- if (plus[ii] > 0)
- {
- if (p) sw.Write((a + 1) + " AA ");
- res = res + (a + 1) * plus[ii];
- if (p) sw.WriteLine((a + 1) * plus[ii]);
- }
- else
- {
- if (p) sw.Write((a) + " AA ");
- res = res + (-a) * plus[ii];
- if (p) sw.WriteLine(-a * plus[ii]);
- }
- ii++;
- }
- }
- a++;
- }
- /*for (int i = minus.Count - 1; i >= 0; i--)
- {
- //sw.Write(minus[i] + " ");
- if (minus[i] > 0)
- {
- res -= (a + 1) * minus[i];
- //sw.WriteLine((a + 1) * minus[i]);
- }
- else
- {
- res -= -a * minus[i];
- //sw.WriteLine(-a * minus[i]);
- }
- a++;
- }
- //sw.WriteLine("now +:");
- for (int i = 0; i < plus.Count; i++)
- {
- //sw.Write(plus[i] + " ");
- if (plus[i] > 0)
- {
- res += (a + 1) * plus[i];
- //sw.WriteLine((a + 1) * plus[i]);
- }
- else
- {
- res += -a * plus[i];
- //sw.WriteLine(-a * plus[i]);
- }
- a++;
- }*/
- sw.Write(res);
- sw.Close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement