답안 #241014

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
241014 2020-06-22T06:57:27 Z SamAnd Igra (COCI17_igra) C++17
100 / 100
5 ms 384 KB
#include <bits/stdc++.h>
using namespace std;
#define m_p make_pair
#define all(x) (x).begin(),(x).end()
#define sz(x) ((int)(x).size())
#define fi first
#define se second
typedef long long ll;
mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count());
mt19937 rnf(2106);
const int N = 5003;

int n;
char a[N], b[N];

int qa[302], qb[302];

bool stg()
{
    for (int uab = 0; uab <= qa['a']; ++uab)
    {
        int fa = qb['a'], fb = qb['b'], fc = qb['c'];
        fb -= uab;
        fc -= (qa['a'] - uab);
        if (fb < 0 || fc < 0)
            continue;
        int sb = qa['b'], sc = qa['c'];
        if (sb >= fc && sc >= fb)
            return true;
        continue;
        if (sb <= fc)
        {
            fc -= sb;
            sb = 0;
        }
        else
        {
            sb -= fc;
            fc = 0;
        }
        if (sc <= fb)
        {
            fb -= sc;
            sc = 0;
        }
        else
        {
            sc -= fb;
            fb = 0;
        }
    }
    return false;
}

void solv()
{
    scanf("%d", &n);
    scanf(" %s", a);
    scanf(" %s", b);
    for (int i = 0; i < n; ++i)
        qa[a[i]]++;
    for (int i = 0; i < n; ++i)
        qb[b[i]]++;
    for (int i = 0; i < n; ++i)
    {
        qb[b[i]]--;
        for (char u = 'a'; u <= 'c'; ++u)
        {
            if (!qa[u] || u == b[i])
                continue;
            --qa[u];
            if (stg())
            {
                putchar(u);
                break;
            }
            ++qa[u];
        }
    }
    putchar('\n');
}

int main()
{
    #ifdef SOMETHING
    freopen("input.txt", "r", stdin);
    //freopen("output.txt", "w", stdout);
    #endif // SOMETHING
    //ios_base::sync_with_stdio(false), cin.tie(0);
    solv();
    return 0;
}

//while ((double)clock() / CLOCKS_PER_SEC <= 0.9){}

Compilation message

igra.cpp: In function 'bool stg()':
igra.cpp:22:13: warning: unused variable 'fa' [-Wunused-variable]
         int fa = qb['a'], fb = qb['b'], fc = qb['c'];
             ^~
igra.cpp: In function 'void solv()':
igra.cpp:61:16: warning: array subscript has type 'char' [-Wchar-subscripts]
         qa[a[i]]++;
                ^
igra.cpp:63:16: warning: array subscript has type 'char' [-Wchar-subscripts]
         qb[b[i]]++;
                ^
igra.cpp:66:16: warning: array subscript has type 'char' [-Wchar-subscripts]
         qb[b[i]]--;
                ^
igra.cpp:69:22: warning: array subscript has type 'char' [-Wchar-subscripts]
             if (!qa[u] || u == b[i])
                      ^
igra.cpp:71:19: warning: array subscript has type 'char' [-Wchar-subscripts]
             --qa[u];
                   ^
igra.cpp:77:19: warning: array subscript has type 'char' [-Wchar-subscripts]
             ++qa[u];
                   ^
igra.cpp:57:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
     ~~~~~^~~~~~~~~~
igra.cpp:58:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf(" %s", a);
     ~~~~~^~~~~~~~~~
igra.cpp:59:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf(" %s", b);
     ~~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 384 KB Output is correct
3 Correct 5 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 384 KB Output is correct
10 Correct 5 ms 384 KB Output is correct