A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

A Drop of the Programming Sea

یک قطره از دریای برنامه نویسی: وبلاگ امیرحسین مهدی‌نژاد، برنامه‌نویس، مدرس برنامه‌نویسی و دانشجوی مهندسی کامپیوتر

● Codeforces Round #205 (Div. 2) - D. Queue

جمعه, ۱۹ مهر ۱۳۹۲، ۱۲:۱۰ ب.ظ

دختر و پسرهای دبیرستانی برای سوارشدن به اتوبوس صف بسته اند، امّا اتوبوس راه می افتد اگر و تنها اگر پسرها زودتر از دخترها سوار شوند! پس باید تغییراتی در صف ایجاد شود، اینگونه که در هر ثانیه اگر پسری، دختری را جلوی خود دید جای آنها عوض می شود تا زمانی که هیچ دختری جلوی هیچ پسری نباشد؛ در اینجا دخترها را با F و پسرها را با M نمایش می دهیم. به ازای هر رشته ی ورودی شامل F و M ، حداقل زمان برای تشکیل رشته ای از تمام M ها در سمت راست و تمام F ها در سمت چپ را بر حسب ثانیه به دست آورید.


input
MMFF
output
3

input
MFMF
output
2


ورودی:

خط اوّل شامل یک رشته s1s2... sn متشکل از حروف بزرگ M و F با حداکثر سایز 106 کاراکتر است که اگر si مساوی با M بود به این معنیست که نفر i-ام پسر و اگر مساوی با F بود، یعنی دختر است.


خروجی:

مدت زمان لازم برای رسیدن به یک صف ایده آل را بر حسب ثانیه به عنوان خروجی چاپ کنید. (اگر ورودی تنها شامل M و یا تنها شامل F بود، مسلماً جواب 0 خواهد بود)


// A Drop of the Programming Sea - adops.blog.ir

#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    string str="";
    cin >> str;
    int tmp=0, res=0, M=0, F=0;
    while(str[tmp]=='F' && tmp<str.length())
        tmp++;
    for(int i=tmp; i<str.length(); i++)
        if(str[i]=='F')
        {
            F++;
            res = max(res, M+F-1);
        }
        else
        {
            M++;
            F = max(0, F-1);
        }
    cout << res;
}

نظرات  (۱)

۱۱ آبان ۹۲ ، ۲۰:۳۲ مهدی مظاهری
سلام
سوال و جواب به نظر نمیان با هم بخونن! تو مثال اول مگه جواب ۴ نمیشه؟
پاسخ:
خیر، در لحظه ی اول به صورت MFMF میشه، بعد در لحظه ی دوم به صورت FMFM میشه (احتمالاً خطای شما اینجا بوده، چون هر یک از حرکات را یک ثانیه در نظر گرفتید) و در لحظه ی سوم همان FFMM که مطلوب بوده.

باتشکر

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی