QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#78152 | #5460. Sum of Numbers | greenfishsolo# | WA | 10ms | 5688kb | C++23 | 1.4kb | 2023-02-17 09:35:51 | 2023-02-17 09:35:52 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 50;
int n, k, d[N], l, r, L[N];
string s;
vector<int> ret;
bool less_than(vector<int> a, vector<int> b) {
for (int i = 0; i < max(a.size(), b.size()); ++i) {
int lhs = (i < a.size() ? a[i] : 0);
int rhs = (i < b.size() ? b[i] : 0);
if (lhs != rhs)
return lhs < rhs;
}
return false;
}
void go(int i, int su, int t) {
if (i == k) {
if (su != n) return;
vector<int> f(r + 1);
int p = 0;
for (int i = 0; i < k; ++i) {
for (int j = 0; j < L[i]; ++j)
f[j] += d[p + j];
p += L[i];
}
for (int i = 0; i + 1 < r; ++i) {
f[i + 1] += f[i] / 10;
f[i] %= 10;
}
if (ret.empty() || less_than(f, ret))
ret = f;
}
else {
int le = (i == 0 ? l : max(l, t - 1));
int ri = (i == 0 ? r : min(r, t + 1));
for (int j = le; j <= ri; ++j) {
L[i] = j;
go(i + 1, su + j, j);
}
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T;
cin >> T;
while (T--) {
cin >> n >> k >> s;
ret.clear();
++k;
for (int i = 0; i < n; ++i) {
d[i] = s[i] - 48;
}
reverse(d, d + n);
r = (n + k - 1) / k; ++r;
l = max(1, r - k);
go(0, 0, 0);
int p = 0;
reverse(ret.begin(), ret.end());
while (p < ret.size() && !ret[p]) ++p;
if (p == ret.size()) cout << 0;
else {
while (p < ret.size())
cout << ret[p++];
}
cout << '\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 5480kb
input:
2 8 1 45455151 2 1 42
output:
9696 6
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 10ms
memory: 5688kb
input:
10 1301 6 56328399613959594774559774218276494124991536454496431869449134772679831477279356599352619469813771742358572734317965823527349354276551857226632977613336815474383422853946661428822284645652423563864641261338984158269966469425994769486371736593879954275146732544891889693921182364554588732946...
output:
8899535156969234029079874379780704069164253045293723285130311429674518619225264410023424297175128374638589140605311529528486739994966669682285137381760656712997802628044639848119393522310 1061262698942259764902278032032634830911300529206799759852364077394219640635377486503314673088434518924757586184...
result:
wrong answer 1st lines differ - expected: '286183755510664079479706773787...6909797866802717925250679901255', found: '889953515696923402907987437978...2997802628044639848119393522310'