codeforces-264A-Escape from Stones

来源:互联网 发布:公安大数据应用 编辑:程序博客网 时间:2024/05/29 15:58

codeforces-264A-Escape from Stones


                    time limit per test2 seconds    memory limit per test256 megabytes

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.

input
llrlr
output
3
5
4
2
1

input
rrlll
output
1
2
5
4
3

input
lrlrr
output
2
4
5
3
1

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.

题目链接:cf-264A

题目大意:初始主角站在区间[0,1]的中点,然后有大量石头掉落(每次都会掉落在当前区间中点),此时主角会向左右移动,每次移动后的区间缩小为1/2。要求:从左往右输出出现的石头编号。

题目思路:

以下是代码:

#include <vector>#include <map>#include <set>#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <string>#include <cstring>using namespace std;int ans[1000010];int main(){    string s;    cin >> s;    int left = 0,right = s.size() - 1;    for (int i = 0; i < s.size(); i++)    {        if (s[i] == 'l') ans[right--] = i + 1;        else  ans[left++] = i + 1;    }    for (int i = 0; i < s.size(); i++)    {        printf("%d\n",ans[i]);    }    return 0;}

//- - - - - - - - - – - - - - - - - - - - - - - DFS- - - - - - - - - - - - - - - - - - - - - - - - - - -

#include <vector>#include <map>#include <set>#include <algorithm>#include <iostream>#include <cstdio>#include <cmath>#include <cstdlib>#include <string>#include <cstring>using namespace std;string s;  void dfs(int x)  {      if (s[x] == 0) return;      if (s[x] == 'l')      {          dfs(x + 1);          printf("%d\n", x + 1);      }      else      {          printf("%d\n", x + 1);          dfs(x + 1);      }  }  int main() {      cin >> s;      dfs(0);      return 0;  }  
0 0
原创粉丝点击