cyk的小学妹

Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description

一天,cyk 又收到了勤奋好学的小学妹发来的代码,cyk 二话不说就打开了代码开始帮学妹找错。

不过,往往 cyk 收到的都是完全没有缩进的代码,这让他不得不先修改好缩进再帮学妹看代码。

渐渐地,cyk 面对越来越长的无缩进代码已经力不从心,他想请你帮助他写一个小程序,来实现自动格式化代码。

 

cyk 收到的代码都具有以下特征:

  • 无缩进,每行都顶头
  • 左花括号 '{' 永远在每行的第一个字符处
  • 右花括号 '}' 永远在每一行的末尾(可能出现多个右花括号)
  • 多个 if, else, for, while 不会出现在同一行
  • 代码很紧凑,不会出现单独的空行

cyk 偏好的格式化代码的规则如下:

  • 必须有缩进(每层缩进 4 个空格,左花括号和右花括号在单独的一行)
  • 只需要格式化好缩进,代码的其他部分保持原样

你能帮 cyk 写出这个小程序吗?如果 cyk 满意,他会送你一个 Accepted 做奖励。

Input

输入数据有多组(数据组数不超过 10),到 EOF 结束。

每组输入包含一段多行的文本,表示 cyk 收到的一份代码,以字符串 "#EOF" (不包括引号) 来标志每组输入的结束。

保证每行字符串的末尾没有多余的空格,而字符串中间可能出现空格。每行字符串的长度不超过 1000。

Output

对于每组输入,输出一段格式化好的代码。每组输出后面跟一行空行。

Sample Input

#include<stdio.h>
int main()
{int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
return 0;}
#EOF
#include<stdio.h>
int main()
{int i,j,k,n,sum;
n=5;
sum=0;
for(i=0;i<n;++i)
{for(j=0;j<n;++j)
{for(k=0;k<n;++k)
{sum+=i*j*k;}}}
printf("%d\n",sum);
return 0;}
#EOF

Sample Output

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d\n",a+b);
    return 0;
}

#include<stdio.h>
int main()
{
    int i,j,k,n,sum;
    n=5;
    sum=0;
    for(i=0;i<n;++i)
    {
        for(j=0;j<n;++j)
        {
            for(k=0;k<n;++k)
            {
                sum+=i*j*k;
            }
        }
    }
    printf("%d\n",sum);
    return 0;
}

Hint

你可以使用 gets 函数来读入包含空格的字符串。

Source

【第八届山东理工大学ACM网络编程擂台赛 热身赛】cyk2 (bLue)