QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#315083 | #5140. Frozen Scoreboard | Detach | TL | 2ms | 3892kb | C++17 | 4.2kb | 2024-01-26 22:50:42 | 2024-01-26 22:50:43 |
Judging History
answer
#include <bits/stdc++.h>
// #include <algorithm>
// #include <queue>
// #include <map>
// #include <iostream>
// #include <string>
// #include <set>
#define endl '\n'
using namespace std;
using LL = long long;
using PII = pair<int, int>;
using i128 = __int128_t;
using ULL = unsigned long long;
const int INF = 0x3f3f3f3f, MOD = 1e9 + 7, N = 1e6 + 5;
const LL LINF = 0x3f3f3f3f3f3f3f3f;
int m;
struct node
{
char op;
int x, y, idx;
};
void solve()
{
int pb, tm;
cin >> pb >> tm;
vector<struct node> a(m), b;
vector<bool> st(m);
int pas = 0, penal = 0;
for(int i = 0; i < m; i ++ )
{
char op;
int x = 0, y = 0;
cin >> op;
if(op == '.') a[i].op = op;
else if(op == '-')
{
cin >> x;
a[i] = {op, x, x, i};
}
else if(op == '?')
{
cin >> x >> y;
a[i] = {op, x, y, i};
b.push_back(a[i]);
}
else
{
string s;
cin >> s;
int len = s.size();
bool ok = false;
for(int i = 0; i < len; i ++ )
{
if(s[i] == '/') ok = true;
else
{
int k = s[i] - '0';
if(!ok) x = x * 10 + k;
else y = y * 10 + k;
}
}
a[i] = {op, x, y, i};
pas ++ , penal += 20 * (x - 1) + y;
}
}
if(pas + b.size() < pb)
{
cout << "No" << endl;
return;
}
if(pas > pb)
{
cout << "No" << endl;
return;
}
else if(pas == pb)
{
cout << (penal == tm ? "Yes" : "No") << endl;
if(penal == tm)
for(int i = 0; i < m; i ++ )
{
auto [op, x, y, idx] = a[i];
if(op == '.') cout << op << endl;
else if(op == '-') cout << op << ' ' << x << endl;
else if(op == '+') cout << op << ' ' << x << '/' << y << endl;
else cout << "- " << y << endl;
}
return;
}
pas = pb - pas, penal = tm - penal;
int r = penal - pas * 240;
if(r < 0)
{
cout << "No" << endl;
return;
}
int l = r - 59 * pas;
l = max(l, 0);
l = (l + 19) / 20, r /= 20;
int n = b.size();
auto dfs = [&](auto self, int x, int num, int tot, int ft)->bool
{
if(num == pas)
{
return (tot <= r and tot + ft >= l);
}
for(int i = x; i < n; i ++ )
{
st[b[i].idx] = true;
if(self(self, i + 1, num + 1, tot + b[i].y - b[i].x, ft + b[i].x - 1)) return true;
st[b[i].idx] = false;
if(self(self, i + 1, num, tot, ft)) return true;
}
return false;
};
bool ok = dfs(dfs, 0, 0, 0, 0);
if(!ok) cout << "No" << endl;
else
{
cout << "Yes" << endl;
penal -= 240 * pas;
for(int i = 0; i < m; i ++ )
{
if(!st[i]) continue;
penal -= 20 * (a[i].y - a[i].x);
}
for(int i = 0; i < m; i ++ )
{
auto [op, x, y, idx] = a[i];
if(op == '.') cout << '.' << endl;
else if(op == '-') cout << op << ' ' << x << endl;
else if(op == '+') cout << op << ' ' << x << '/' << y << endl;
else
{
if(!st[i])
{
cout << "- " << y << endl;
}
else
{
int t = penal / 20;
int k = min(t, x - 1);
penal -= k * 20;
int kk = min(59, penal);
penal -= kk;
cout << "+ " << y - x + k + 1 << '/' << 240 + kk << endl;
}
}
}
}
}
int main()
{
// freopen("galactic.in", "r", stdin);
ios::sync_with_stdio(false), cin.tie(nullptr);
int T = 1;
cin >> T >> m;
while(T -- )
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3588kb
input:
1 13 7 951 + 1/6 ? 3 4 + 4/183 - 2 + 3/217 . . . + 2/29 + 1/91 . + 1/22 .
output:
Yes + 1/6 + 3/243 + 4/183 - 2 + 3/217 . . . + 2/29 + 1/91 . + 1/22 .
result:
ok ok (1 test case)
Test #2:
score: 0
Accepted
time: 0ms
memory: 3660kb
input:
6 2 1 100 . ? 3 4 2 100 + 1/1 + 1/2 0 0 - 5 - 6 2 480 ? 100 100 ? 100 100 2 480 ? 99 100 ? 100 100 1 2000 ? 100 100 ? 100 100
output:
No No Yes - 5 - 6 Yes + 1/240 + 1/240 No Yes + 89/240 - 100
result:
ok ok (6 test cases)
Test #3:
score: 0
Accepted
time: 2ms
memory: 3656kb
input:
1000 13 6 1519 + 3/183 - 1 + 9/133 ? 2 3 - 5 ? 1 3 - 5 ? 1 1 ? 1 3 - 5 + 1/165 - 6 ? 2 5 2 570 - 2 - 9 . - 1 - 7 - 6 + 4/179 - 2 ? 2 5 . - 2 ? 1 3 . 1 140 . - 2 . - 2 - 1 - 2 - 2 . . . . + 3/100 . 1 195 + 1/195 . . . . . . . . ? 1 1 . . . 0 0 . . . . . . . . . . . . . 3 776 ? 8 22 ? 1 8 - 6 + 1/173 ...
output:
Yes + 3/183 - 1 + 9/133 + 3/278 - 5 + 3/240 - 5 + 1/240 - 3 - 5 + 1/165 - 6 - 5 Yes - 2 - 9 . - 1 - 7 - 6 + 4/179 - 2 + 5/251 . - 2 - 3 . Yes . - 2 . - 2 - 1 - 2 - 2 . . . . + 3/100 . Yes + 1/195 . . . . . . . . - 1 . . . Yes . . . . . . . . . . . . . Yes - 22 - 8 - 6 + 1/173 - 11 - 9 - 3 - 6 + 6/25...
result:
ok ok (1000 test cases)
Test #4:
score: 0
Accepted
time: 2ms
memory: 3892kb
input:
1000 13 0 0 . . . - 1 . - 5 . - 2 - 2 - 1 - 9 - 2 . 0 0 - 7 - 1 ? 2 2 - 2 - 4 . - 1 - 3 - 6 - 1 ? 4 6 . - 1 2 480 + 4/120 - 3 - 5 . - 11 - 1 - 4 - 4 - 3 ? 13 22 . + 9/140 ? 1 5 3 465 . . . + 1/124 . + 1/139 . . + 1/202 . . . . 3 885 - 1 - 4 - 4 + 4/158 . + 9/138 ? 1 8 . ? 1 3 . - 4 ? 2 5 . 6 970 - 4...
output:
Yes . . . - 1 . - 5 . - 2 - 2 - 1 - 9 - 2 . Yes - 7 - 1 - 2 - 2 - 4 . - 1 - 3 - 6 - 1 - 6 . - 1 Yes + 4/120 - 3 - 5 . - 11 - 1 - 4 - 4 - 3 - 22 . + 9/140 - 5 Yes . . . + 1/124 . + 1/139 . . + 1/202 . . . . Yes - 1 - 4 - 4 + 4/158 . + 9/138 - 8 . - 3 . - 4 + 5/289 . No Yes - 2 + 1/205 - 1 + 1/106 - 1...
result:
ok ok (1000 test cases)
Test #5:
score: 0
Accepted
time: 0ms
memory: 3596kb
input:
1000 13 5 1620 - 2 - 1 ? 2 4 ? 4 5 + 6/213 . + 6/231 ? 2 4 + 7/215 . . ? 2 6 ? 1 1 2 975 ? 1 4 - 2 - 6 . ? 2 12 ? 1 4 ? 2 7 - 3 - 1 ? 2 19 ? 2 2 - 2 ? 1 1 0 0 . . - 3 - 1 . - 1 - 4 . - 1 . - 1 - 1 - 3 4 1342 . - 6 - 2 - 4 - 8 - 6 + 14/95 ? 2 2 ? 1 9 ? 6 10 - 7 + 4/205 ? 3 5 5 1019 . . . + 2/116 . - ...
output:
Yes - 2 - 1 + 4/299 + 3/242 + 6/213 . + 6/231 - 4 + 7/215 . . - 6 - 1 Yes + 4/299 - 2 - 6 . - 12 - 4 - 7 - 3 - 1 + 19/256 - 2 - 2 - 1 Yes . . - 3 - 1 . - 1 - 4 . - 1 . - 1 - 1 - 3 Yes . - 6 - 2 - 4 - 8 - 6 + 14/95 + 2/299 + 9/243 - 10 - 7 + 4/205 - 5 Yes . . . + 2/116 . - 1 + 3/127 . . + 1/275 + 4/1...
result:
ok ok (1000 test cases)
Test #6:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
1000 13 0 0 . . . . - 1 . ? 1 4 . . - 1 . . - 1 5 1008 - 2 - 2 . + 4/157 . . + 2/145 - 3 + 2/125 . + 1/233 + 4/188 - 5 0 0 . . ? 1 1 . . . . . . . . . . 6 1359 + 1/100 + 2/144 - 4 + 2/238 - 2 - 2 + 4/107 + 4/214 . ? 3 6 + 9/236 - 4 - 6 8 3064 + 20/155 . - 17 - 11 ? 9 10 ? 11 30 - 1 ? 6 13 + 6/113 + ...
output:
Yes . . . . - 1 . - 4 . . - 1 . . - 1 Yes - 2 - 2 . + 4/157 . . + 2/145 - 3 + 2/125 . + 1/233 + 4/188 - 5 Yes . . - 1 . . . . . . . . . . Yes + 1/100 + 2/144 - 4 + 2/238 - 2 - 2 + 4/107 + 4/214 . - 6 + 9/236 - 4 - 6 Yes + 20/155 . - 17 - 11 + 5/242 + 20/240 - 1 - 13 + 6/113 + 2/221 + 4/240 + 12/151 ...
result:
ok ok (1000 test cases)
Test #7:
score: 0
Accepted
time: 2ms
memory: 3668kb
input:
1000 13 2 501 ? 1 8 - 1 + 4/208 - 5 - 1 - 19 + 4/173 - 11 . - 11 ? 1 1 . - 10 4 599 - 2 . - 12 . + 1/142 + 3/85 - 3 ? 4 8 + 4/80 . - 1 . + 3/152 13 3774 ? 2 7 ? 2 3 + 12/162 + 2/112 + 4/174 + 12/156 + 2/163 + 2/168 + 12/186 + 6/191 + 8/43 ? 1 2 ? 1 16 8 2408 ? 2 5 ? 1 1 ? 6 14 + 4/204 . + 2/97 + 2/2...
output:
Yes - 8 - 1 + 4/208 - 5 - 1 - 19 + 4/173 - 11 . - 11 - 1 . - 10 Yes - 2 . - 12 . + 1/142 + 3/85 - 3 - 8 + 4/80 . - 1 . + 3/152 No Yes + 5/299 + 1/299 + 11/244 + 4/204 . + 2/97 + 2/222 + 10/230 . - 7 . - 1 + 2/233 Yes . - 8 - 4 - 4 - 2 . - 7 . . - 10 - 5 - 3 - 4 Yes + 5/293 + 1/173 . - 2 - 1 + 5/238 ...
result:
ok ok (1000 test cases)
Test #8:
score: -100
Time Limit Exceeded
input:
1000 13 1 19917 ? 30 39 ? 79 81 ? 32 33 ? 35 95 ? 14 84 ? 6 17 ? 11 31 ? 5 8 ? 34 89 ? 38 50 ? 10 10 ? 22 54 ? 5 92 1 16730 ? 56 59 ? 40 55 ? 42 54 ? 5 9 ? 65 79 ? 7 11 ? 25 34 ? 2 10 ? 29 51 ? 2 7 ? 39 48 ? 4 67 ? 24 36 8 17772 ? 17 35 ? 36 46 ? 42 63 ? 2 11 ? 59 84 ? 4 36 ? 9 21 ? 76 86 ? 48 89 ? ...
output:
No No No Yes + 95/299 + 22/299 - 22 + 77/241 - 8 - 8 + 74/240 - 40 - 60 - 38 - 25 - 99 - 52 No No No Yes + 54/299 + 31/299 + 52/299 + 11/299 + 20/299 + 74/299 - 14 + 55/247 + 92/240 - 67 - 9 - 55 - 97 No Yes + 75/299 + 52/299 + 25/249 - 3 - 9 - 89 - 17 - 79 - 44 - 71 - 39 - 44 - 12 No No No No No Ye...