QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#883650#9979. Corrupted Scoreboard LogKafuuChinocppWA 1ms3968kbC++147.8kb2025-02-05 17:42:102025-02-05 17:42:11

Judging History

This is the latest submission verdict.

  • [2025-02-05 17:42:11]
  • Judged
  • Verdict: WA
  • Time: 1ms
  • Memory: 3968kb
  • [2025-02-05 17:42:10]
  • Submitted

answer

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <iostream>

using namespace std;

const int max1 = 500;

int T, n, m;
char s[max1 + 5];
string ans;

bool Dfs ( int L, int R, int num, int total )
{
    // printf("L = %d R = %d num = %d total = %d\n", L, R, num, total);
    // cout << ans << endl;
    if ( L == R + 1 )
        return num == 0 && total == 0;
    
    int pos = 0;
    for ( int i = L; i <= R; i ++ )
        if ( s[i] == 't' )
            { pos = i; break; }
    
    ans.push_back(' ');
    int cnt, tim;
    if ( pos - L >= 3 && s[pos - 3] == '1' && s[pos - 2] == '0' && s[pos - 1] == '0' )
    {
        cnt = 100;
        if ( L == pos - 3 )
        {
            tim = 0;
            if ( s[pos + 2] == 'i' )
            {
                for ( int i = pos - 3; i <= pos - 1; i ++ )
                    ans.push_back(s[i]);
                ans.push_back(' ');
                for ( int i = pos; i <= pos + 4; i ++ )
                    ans.push_back(s[i]);
                if ( Dfs(pos + 5, R, num, total) )
                    return true;
                for ( int i = L; i <= pos + 5; i ++ )
                    ans.pop_back();
            }
        }
        else
        {
            tim = 0;
            for ( int i = L; i <= pos - 4; i ++ )
                tim = tim * 10 + s[i] - '0';
            if ( s[L] != '0' && tim >= 0 && tim <= 299 )
            {
                if ( s[pos + 2] == 'i' )
                {
                    for ( int i = L; i <= pos - 4; i ++ )
                        ans.push_back(s[i]);
                    ans.push_back(' ');
                    for ( int i = pos - 3; i <= pos - 1; i ++ )
                        ans.push_back(s[i]);
                    ans.push_back(' ');
                    for ( int i = pos; i <= pos + 4; i ++ )
                        ans.push_back(s[i]);
                    if ( Dfs(pos + 5, R, num - 1, total - (tim + 20 * (cnt - 1))))
                        return true;
                    for ( int i = L; i <= pos + 6; i ++ )
                        ans.pop_back();
                }
            }
        }
    }
    
    if ( pos - L >= 2 )
    {
        cnt = (s[pos - 2] - '0') * 10 + s[pos - 1] - '0';
        if ( cnt >= 10 && cnt <= 99 )
        {
            if ( L == pos - 2 )
            {
                tim = 0;
                if ( s[pos + 2] == 'i' )
                {
                    for ( int i = pos - 2; i <= pos - 1; i ++ )
                        ans.push_back(s[i]);
                    ans.push_back(' ');
                    for ( int i = pos; i <= pos + 4; i ++ )
                        ans.push_back(s[i]);
                    if ( Dfs(pos + 5, R, num, total) )
                        return true;
                    for ( int i = L; i <= pos + 5; i ++ )
                        ans.pop_back();
                }
            }
            else
            {
                tim = 0;
                for ( int i = L; i <= pos - 3; i ++ )
                    tim = tim * 10 + s[i] - '0';
                if ( s[L] != '0' && tim >= 0 && tim <= 299 )
                {
                    if ( s[pos + 2] == 'i' )
                    {
                        for ( int i = L; i <= pos - 3; i ++ )
                            ans.push_back(s[i]);
                        ans.push_back(' ');
                        for ( int i = pos - 2; i <= pos - 1; i ++ )
                            ans.push_back(s[i]);
                        ans.push_back(' ');
                        for ( int i = pos; i <= pos + 4; i ++ )
                            ans.push_back(s[i]);
                        if ( Dfs(pos + 5, R, num - 1, total - (tim + 20 * (cnt - 1))))
                            return true;
                        for ( int i = L; i <= pos + 6; i ++ )
                            ans.pop_back();
                    }
                }
            }
        }
    }

    if ( pos - L >= 1 )
    {
        cnt = s[pos - 1] - '0';
        if ( L == pos - 1 )
        {
            tim = 0;
            if ( cnt == 1 && s[pos + 2] == 'y' )
            {
                ans.push_back(s[pos - 1]);
                ans.push_back(' ');
                for ( int i = pos; i <= pos + 2; i ++ )
                    ans.push_back(s[i]);
                if ( Dfs(pos + 3, R, num, total) )
                    return true;
                for ( int i = L; i <= pos + 3; i ++ )
                    ans.pop_back();
            }

            if ( cnt > 1 && s[pos + 2] == 'i' )
            {
                ans.push_back(s[pos - 1]);
                ans.push_back(' ');
                for ( int i = pos; i <= pos + 4; i ++ )
                    ans.push_back(s[i]);
                if ( Dfs(pos + 5, R, num, total) )
                    return true;
                for ( int i = L; i <= pos + 5; i ++ )
                    ans.pop_back();
            }
        }
        else
        {
            tim = 0;
            for ( int i = L; i <= pos - 2; i ++ )
                tim = tim * 10 + s[i] - '0';
            
            if ( s[L] != '0' && tim >= 0 && tim <= 299 )
            {
                if ( cnt == 1 && s[pos + 2] == 'y' )
                {
                    for ( int i = L; i <= pos - 2; i ++ )
                        ans.push_back(s[i]);
                    ans.push_back(' ');
                    ans.push_back(s[pos - 1]);
                    ans.push_back(' ');
                    for ( int i = pos; i <= pos + 2; i ++ )
                        ans.push_back(s[i]);
                    if ( Dfs(pos + 3, R, num - 1, total - (tim + 20 * (cnt - 1))) )
                        return true;
                    for ( int i = L; i <= pos + 4; i ++ )
                        ans.pop_back();
                }

                if ( cnt > 1 && s[pos + 2] == 'i' )
                {
                    for ( int i = L; i <= pos - 2; i ++ )
                        ans.push_back(s[i]);
                    ans.push_back(' ');
                    ans.push_back(s[pos - 1]);
                    ans.push_back(' ');
                    for ( int i = pos; i <= pos + 4; i ++ )
                        ans.push_back(s[i]);
                    if ( Dfs(pos + 5, R, num - 1, total - (tim + 20 * (cnt - 1))) )
                        return true;
                    for ( int i = L; i <= pos + 6; i ++ )
                        ans.pop_back();
                }
            }
        }
    }

    // printf("end L = %d R = %d num = %d total = %d\n", L, R, num, total);
    // cout << ans << endl;
    ans.pop_back();
    return false;
}

bool Solve ( int x, int y )
{
    ans.clear();
    int num = 0;
    for ( int i = 1; i <= x; i ++ )
    {
        if ( s[i] >= '0' && s[i] <= '9' )
            num = num * 10 + s[i] - '0';
        else
            return false;
        
        ans.push_back(s[i]);
    }

    if ( num > m )
        return false;
    if ( x == 2 && m < 10 )
        return false;
    
    ans.push_back(' ');

    if ( x + 1 < y && s[x + 1] == '0' )
        return false;

    int total = 0;
    for ( int i = x + 1; i <= y; i ++ )
    {
        if ( s[i] >= '0' && s[i] <= '9' )
            total = total * 10 + s[i] - '0';
        else
            return false;
        
        ans.push_back(s[i]);
    }

    return Dfs(y + 1, n, num, total);
}

void Work ()
{
    scanf("%s", s + 1); n = strlen(s + 1);
    for ( int i = 1; i <= 2; i ++ )
        for ( int j = 1; j <= 5; j ++ )
            if ( i + j <= n && Solve(i, i + j) )
                { cout << ans << endl; return; }
    // Solve(1, 4);
    // cout << ans << endl;
    return;
}

int main ()
{
    scanf("%d%d", &T, &m);
    while ( T -- )
        Work();

    return 0;
}

详细

Test #1:

score: 100
Accepted
time: 1ms
memory: 3968kb

input:

4 12
99351583tries261try312tries231try4tries431try2412tries551try991try1791try
912121482tries572tries392tries821try4tries431try521try2492tries1842tries2183tries
912181082tries141try542tries922tries6tries302tries6tries502tries2441try1956tries1714tries
913221241try261try542tries1331try2002tries621try2...

output:

9 935 158 3 tries 26 1 try 31 2 tries 23 1 try 4 tries 43 1 try 241 2 tries 55 1 try 99 1 try 179 1 try
9 1212 148 2 tries 57 2 tries 39 2 tries 82 1 try 4 tries 43 1 try 52 1 try 249 2 tries 184 2 tries 218 3 tries
9 1218 108 2 tries 14 1 try 54 2 tries 92 2 tries 6 tries 30 2 tries 6 tries 50 2 tr...

result:

ok 4 lines (4 test cases)

Test #2:

score: 0
Accepted
time: 1ms
memory: 3968kb

input:

5 2
0022tries22tries
12222tries22tries
24422tries22tries
284222tries222tries
2844222tries222tries

output:

0 0 22 tries 22 tries
1 22 22 tries 2 2 tries
2 44 2 2 tries 2 2 tries
2 84 22 2 tries 22 2 tries
2 844 2 22 tries 2 22 tries

result:

ok 5 lines (5 test cases)

Test #3:

score: -100
Wrong Answer
time: 1ms
memory: 3968kb

input:

500 13
91481641try2951try511try1try1291try2781try1331try651try1961try1try2701try
001try1try1try1try1try
131200151try201try151try151try361try881try1231try1761try1921try1901try341try2061try901try
1325842381try131try1621try2961try2261try1891try1091try1701try971try2961try2761try2651try2471try
916741021t...

output:

9 1481 64 1 try 295 1 try 51 1 try 1 try 129 1 try 278 1 try 133 1 try 65 1 try 196 1 try 1 try 270 1 try
0 0 1 try 1 try 1 try 1 try 1 try
13 1200 15 1 try 20 1 try 15 1 try 15 1 try 36 1 try 88 1 try 123 1 try 176 1 try 192 1 try 190 1 try 34 1 try 206 1 try 90 1 try
13 2584 238 1 try 13 1 try 162...

result:

wrong answer It is not same after removing spaces (test case 75)