首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-01-26 
CF 264A(向内的双向队列)C. Escape from Stonestime limit per test2 secondsmemory limit per test256 me

CF 264A(向内的双向队列)
C. Escape from Stonestime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard 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 CF 264A(向内的双向行列), 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;}



热点排行