fork(2) download
  1. // Символы во входном потоке следует вводить через пробел.
  2. import java.util.*;
  3. import java.lang.*;
  4. import java.io.*;
  5.  
  6. class Ideone{
  7. public static void main (String[] args) throws java.lang.Exception{
  8. try{
  9. String line;
  10. String a1="";
  11. Stack<String> st = new Stack();
  12. Stack<String> st2 = new Stack();
  13. while( (line = reader.readLine()) != null){
  14. String[] a = line.split(" ");
  15. for(int i = 0 ; i < a.length ; i++){
  16. if(!a[i].equals("+") && !a[i].equals("-") && !a[i].equals("*") && !a[i].equals("/") && !a[i].equals("(") && !a[i].equals(")")){
  17. a1+=a[i];
  18. }
  19. else{
  20. if((a[i].equals("+") || a[i].equals("-")) && st.size()>0){
  21. for(int j=0; j<2;j++){
  22. if(st.size()>0){
  23. if(!st.peek().equals("(")){
  24. a1+=st.pop();
  25. }
  26. }
  27. }
  28. }
  29. if((a[i].equals("*") || a[i].equals("/")) && st.size()>0){
  30. for(int j=0; j<1;j++){
  31. if(!st.peek().equals("(") && !st.peek().equals("+") && !st.peek().equals("-")){
  32. a1+=st.pop();
  33. }
  34. }
  35. }
  36. if(a[i].equals(")") && st.size()>0){
  37. for(int j=0; j<=st.size()+2;j++){
  38. if(!st.peek().equals("(")){
  39. a1+=st.pop();
  40. }
  41. }
  42. if(st.size()!=0){
  43. for(int j=0; j<2;j++){
  44. if(j==0 || (j==1 && ( a[i].equals("*") || a[i].equals("/")))){
  45. a1+=st.pop();}
  46. }
  47. }
  48. }
  49. st.push(a[i]);
  50. }
  51. }
  52. for(int i = 0 ; i <= st.size() ; i++){
  53. a1+=st.pop();
  54. }
  55. for(int i = 0 ; i < a1.length() ; i++){
  56. if(a1.charAt(i)!='(' && a1.charAt(i)!=')')
  57. System.out.print(a1.charAt(i)+" ");
  58. }
  59. }
  60. }catch(IOException ex){
  61. System.err.println("Eror");
  62. }
  63. }
  64. } // Символы во входном потоке следует вводить через пробел.
Success #stdin #stdout 0.1s 320512KB
stdin
1 / 2 + ( 2 + 3 ) / ( 7 * 3 / ( 9 - 2 ) * 2 - 6 / 7 - 6 * ( 4 - 6 * 3 ) -7 )
stdout
1 2 / 2 3 + 7 3 * 9 2 - 2 * / 6 7 / - 6 4 6 3 * - - 7 * - /