QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#883650 | #9979. Corrupted Scoreboard Log | KafuuChinocpp | WA | 1ms | 3968kb | C++14 | 7.8kb | 2025-02-05 17:42:10 | 2025-02-05 17:42:11 |
Judging History
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)