Educational Codeforces Round 42 (Rated for Div. 2) B. Students in Railway Carriage

一开始想复杂了。

其实很简单。就挨着扫一遍,每次优先排数量大的,然后交替排就好了

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{   char s[200005];
    int tot[100005]={0};
    int n,a,b;
    cin>>n>>a>>b;
    int i,j;
    for(i=0;i<n;i++)
    {
        cin>>s[i];
    }
    int flag;//flag=1,放a,否则放b
    if(a>b) flag=1;
    else flag=0;
    int ans=0;
    for(i=0;i<n;i++)
    {
        if(s[i]=='.'&&a>0&&b>0)
        {
            if(flag==1)
            {
                a--;
                ans++;
                flag=0;
            }
            else
            {
                b--;
                ans++;
                flag=1;
            }
        }
        else if(s[i]=='.'&&a>0&&b==0)
        {
            a--;
            i++;
            ans++;
        }
        else if(s[i]=='.'&&a==0&&b>0)
        {
            b--;
            i++;
            ans++;
        }
        else if(s[i]=='*')//如果遇到*,重新比较ab大小
        {
            if(a>b) flag=1;
            else flag=0;
        }
    }
    printf("%d\n",ans);
    return 0;
}

  

posted @ 2018-04-16 20:44  行远山  阅读(114)  评论(0编辑  收藏  举报