CF 264A(向内的双向队列)

来源:互联网 发布:seo站内优化工资 编辑:程序博客网 时间:2024/04/29 17:08
C. Escape from Stones
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Squirrel Liss lived in a forest peacefully, but unexpected trouble happens. Stones fall from a mountain. Initially Squirrel Liss occupies an interval [0, 1]. Next, n stones will fall and Liss will escape from the stones. The stones are numbered from 1 to n in order.

The stones always fall to the center of Liss's interval. When Liss occupies the interval [k - d, k + d] and a stone falls to k, she will escape to the left or to the right. If she escapes to the left, her new interval will be [k - d, k]. If she escapes to the right, her new interval will be [k, k + d].

You are given a string s of length n. If the i-th character of s is "l" or "r", when the i-th stone falls Liss will escape to the left or to the right, respectively. Find the sequence of stones' numbers from left to right after all the n stones falls.

Input

The input consists of only one line. The only line contains the string s (1 ≤ |s| ≤ 106). Each character in s will be either "l" or "r".

Output

Output n lines — on the i-th line you should print the i-th stone's number from the left.

Sample test(s)
input
llrlr
output
35421
input
rrlll
output
12543
input
lrlrr
output
24531
Note

In the first example, the positions of stones 1, 2, 3, 4, 5 will be , respectively. So you should print the sequence: 3, 5, 4, 2, 1.


不能用模拟double+除法,会爆精度啊!!(long double 也不行)

其实只要根据性质,在序列前后添加即可。

靠,人生中的处女Hack,竟然是被Hack…(受?)


#include<cstdio>#include<iostream>#include<cstdlib>#include<cstring>#include<cmath>#include<functional>#include<algorithm>#include<cctype>using namespace std;#define MAXN (1000000+10)//pair<double,int> a[MAXN];char s[MAXN];int n,a[MAXN];int main(){scanf("%s",&s);n=strlen(s);int l=1,r=n;for (int i=0;i<n;i++){if (s[i]=='l') a[r--]=i+1;else a[l++]=i+1;}for (int i=1;i<=n;i++) cout<<a[i]<<endl;}