atcoder161 E - Yutori

 

E - Yutori 


制限時間:2秒/メモリ制限:1024メガバイト

 

問題文

高橋の作品に決定しましたK のKからの彼の選択の日数N Nの明日から始まる日。

あなたが整数与えられ、C C及び文字列S S次のように高橋は彼の就業日を選択します:

  • その日のために働いた後、彼は、その後の作業を控えるC Cの日。
  • 場合は、私、私の目の文字S Sでありx、彼は日に動作しません私はの日、1 1は明日で、デイ2 2は明後日、などとします。

高橋は仕事にバインドされているすべての日を検索します。

制約

  • 1 N 2 × 10 5 1≤N≤2×105
  • 1 K N 1≤K≤N
  • 0 C N 0≤C≤N
  • 長さS SであるN 、N
  • 各文字S Sはありますox
  • 問題文での条件が満たされるように、高橋は彼の平日を選択することができます。

入力

入力は、次の形式で標準入力から与えられます。

nkcs

出力

高橋は昇順、1行に1つずつでの作業にバインドされているすべての日を印刷します。


サンプル入力1 コピー

コピー
11 3 2 
ooxxxoxxxoo

サンプル出力1 コピー

コピー
6

高橋は、上で動作するように起こっている3 3のうちの日11 11日。その日のために働いた後、彼は、その後の作業を控える2 2日。

デイ:彼の平日のための4つの可能な選択肢があります1 6 10 1,6,10、デイ1 6 11 1,6,11、デイ2 6 10 2,6,10、及びデイ2 図6は、11 2,6,11

このように、彼は日に仕事にバインドされている6 6


サンプル入力2 のコピー

コピー
5 2 3 
ooxoo

サンプル出力2 のコピー

コピー
1 
5

デイ:彼の平日のための唯一の可能な選択肢があります1 5 1,5


サンプル入力3 コピー

コピー
5 1 0 
oooooが

サンプル出力3 コピー

コピー
 
  

彼は仕事にバインドされている何の日が存在しない場合があります。


サンプル入力4 コピー

コピー
16 4 3 
ooxxoxoxxxoxoxxo

サンプル出力4 コピー

コピー
11 
16 
他の人の交流の記録
#include <ビット/ STDC ++ H> 
名前空間STDを使用して、
#defineは長い長いINTっ
の#define ULのunsigned long int型
の#define LD長い二重
(; I <T I ++ iが0 = LL)のための#define F(T)
の#define VIベクトル<整数>
の#define VLベクター<LL>
#define PRI対<整数、整数>
の#define MPIマッピング<整数、整数>
の#define PRL対<-1,11,11->
の#define MP make_pair
の#define MPLマップ<-1,11,11->
の#define umpl unordered_map <-1,11,11->
定義PB一back
の#define FF最初
の#define SS第二
の#define MOD十億七
の#define INF 2E18
の#define EPS 1E-3
の#define PI 3.1415926535897932385
CONSTダブルH = 1E-6。
const int型MAX_ = 100005;
#defineの表示(V)、F(v.size())COUT << V [I] << ""
の#defineすべて(V)v.begin()、v.end()

インラインLL MUL(LL A、LL B){リターン(* 1LL * B)%MOD。}
インラインLLサブ(-1,11,11- B){LL C = A - B。IF(C <0)C + = MOD。Cを返します。}
追加ちゃうインライン(-1,11,11- b)は{LL C = A + B。(C> MOD)Cあれば- = MOD。Cを返します。}
////////////////////// ********* CODE *********** ////// ///////////////
/////////////////////////////////// ///////////////////////////////

INTメイン()
{
   ios_base :: sync_with_stdio(偽)。
   cin.tie(NULL)。
   cout.tie(NULL)。
   INT、N、K、C。CIN >> N >> K >> C。
   文字列str; cinを>> STR。
   INTプレ[n]は、SUF [N]。何これより前// i番目の日はありません。
   memsetの(前、0、はsizeof(PRE))。
   memset(SUF、0、はsizeof(SUF))。
   int型の仕事= 1;
   (; I <N I ++ INT I = 0)するための
   {
      IF(STR [I] == 'O')
      {
         事前[I] =仕事++。
         I + = C;
         (仕事> k)のブレークであれば、
      }
   }
   work--。
   (; I> = 0; int型I = N-1 i--)用
   {
      IF(STR [I] == 'O')
      {
         SUF [I] = work--。
         I- = C。
         (作業<= 0)ブレークであれば、
      }
   }
   のために(INT I 0 =;私は<N; iが++)
   {
      場合(![I] == SUF [i]は[I] = 0を事前&& PRE)
      {
         COUT << I + 1 << "\ n"は;



   0を返します。
}    

 

おすすめ

転載: www.cnblogs.com/asunayi/p/12650631.html