제출 #889072

#제출 시각아이디문제언어결과실행 시간메모리
889072StefanL2005Paint By Numbers (IOI16_paint)C++14
59 / 100
1 ms600 KiB
#include <bits/stdc++.h>
using namespace std;
//ifstream in("file.in");

string solve_puzzle(string s, vector<int> c)
{
    int n = s.length(), k = c.size();
    string ans;
    vector<pair<int,int>> range(k);
    ans.assign(n, '_');
    int l = 0, poz = 0;

    //left range (min range)
    for (int i = 0; i < n && poz < k; i++)
    {
        if (s[i] == '_')
            l = 0;
        else
            l++;
        
        if (l == c[poz])
        {
            range[poz].first = i + 1 - l;
            l = 0;
            i++; poz++;
        }
    }
    //right range (max range)
    l = 0;
    poz = k - 1;

    for (int i = n - 1; i >= 0 && poz >= 0; i--)
    {
        if (s[i] == '_')
            l = 0;
        else
            l++;
        if (l == c[poz])
        {
            range[poz].second = i + l - 1;
            l = 0;
            i--; poz--;
        }
    }

    for (int i = 0; i < k; i++)
    {
        for (int j = range[i].first; j <= range[i].second; j++)
            if (s[j] == '.')
                ans[j] = '?';
        int same = c[i] - (range[i].second - range[i].first + 1 - c[i]);

        for (int j = range[i].first + c[i] - 1; j >= range[i].first; j--)
        {
            if (same <= 0)
                break;
            ans[j] = 'X';
            same--;
        }
    }

    return ans;   
}

/*
int main()
{
    string s;
    vector<int> c;
    in>> s;

    int a;
    while (in>> a)
    { c.push_back(a); }

    cout<< solve_puzzle(s, c);
    return 0;
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...