QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#78152#5460. Sum of Numbersgreenfishsolo#WA 10ms5688kbC++231.4kb2023-02-17 09:35:512023-02-17 09:35:52

Judging History

This is the latest submission verdict.

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-02-17 09:35:52]
  • Judged
  • Verdict: WA
  • Time: 10ms
  • Memory: 5688kb
  • [2023-02-17 09:35:51]
  • Submitted

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'