QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#647352 | #5460. Sum of Numbers | crychic | WA | 96ms | 3688kb | C++17 | 6.8kb | 2024-10-17 13:30:46 | 2024-10-17 13:30:47 |
Judging History
answer
#include<bits/stdc++.h>
// #pragma GCC optimize(3)
// #pragma GCC target("avx")
// #pragma GCC optimize("Ofast")
// #pragma GCC optimize("inline")
// #pragma GCC optimize("-fgcse")
// #pragma GCC optimize("-fgcse-lm")
// #pragma GCC optimize("-fipa-sra")
// #pragma GCC optimize("-ftree-pre")
// #pragma GCC optimize("-ftree-vrp")
// #pragma GCC optimize("-fpeephole2")
// #pragma GCC optimize("-ffast-math")
// #pragma GCC optimize("-fsched-spec")
// #pragma GCC optimize("unroll-loops")
// #pragma GCC optimize("-falign-jumps")
// #pragma GCC optimize("-falign-loops")
// #pragma GCC optimize("-falign-labels")
// #pragma GCC optimize("-fdevirtualize")
// #pragma GCC optimize("-fcaller-saves")
// #pragma GCC optimize("-fcrossjumping")
// #pragma GCC optimize("-fthread-jumps")
// #pragma GCC optimize("-funroll-loops")
// #pragma GCC optimize("-fwhole-program")
// #pragma GCC optimize("-freorder-blocks")
// #pragma GCC optimize("-fschedule-insns")
// #pragma GCC optimize("inline-functions")
// #pragma GCC optimize("-ftree-tail-merge")
// #pragma GCC optimize("-fschedule-insns2")
// #pragma GCC optimize("-fstrict-aliasing")
// #pragma GCC optimize("-fstrict-overflow")
// #pragma GCC optimize("-falign-functions")
// #pragma GCC optimize("-fcse-skip-blocks")
// #pragma GCC optimize("-fcse-follow-jumps")
// #pragma GCC optimize("-fsched-interblock")
// #pragma GCC optimize("-fpartial-inlining")
// #pragma GCC optimize("no-stack-protector")
// #pragma GCC optimize("-freorder-functions")
// #pragma GCC optimize("-findirect-inlining")
// #pragma GCC optimize("-fhoist-adjacent-loads")
// #pragma GCC optimize("-frerun-cse-after-loop")
// #pragma GCC optimize("inline-small-functions")
// #pragma GCC optimize("-finline-small-functions")
// #pragma GCC optimize("-ftree-switch-conversion")
// #pragma GCC optimize("-foptimize-sibling-calls")
// #pragma GCC optimize("-fexpensive-optimizations")
// #pragma GCC optimize("-funsafe-loop-optimizations")
// #pragma GCC optimize("inline-functions-called-once")
// #pragma GCC optimize("-fdelete-null-pointer-checks")
// #pragma GCC optimize(2)
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
vector<int> add(const vector<int> &a,const vector<int> &b) {
if(a.size() < b.size()) return add(b, a);
vector<int> c;
int t = 0;
for(int i = 0; i < a.size(); i ++ ) {
t += a[i];
if(b.size() > i) t += b[i];
c.push_back(t % 100000000) ;
t /= 100000000;
}
if(t) c.push_back(t);
return c;
}
void print(const vector<int> &c) {
for(int i = c.size() - 1; i >= 0; i -- ){
if(i != c.size() - 1) cout << setw(8) << setfill('0') << c[i];
else cout << c[i];
// cout << c[i];
}
cout << '\n';
}
bool cmp(const vector<int> &a, const vector<int> &b) {
if(a.size() > b.size()) return true;
else if(a.size() < b.size()) return false;
for(int i = a.size() - 1; i >= 0; i -- ) {
if(a[i] != b[i]) {
return a[i] > b[i];
}
}
return false;
}
void solve() {
int n, k;
cin >> n >> k;
string s;
cin >> s;
int has = n / (k + 1) - 1;
int other = n % (k + 1) + k + 1;
vector<int> ans;
vector<int> p(10);
p[0] = 1;
for(int i = 1;i < 10;i ++) p[i] = p[i - 1] * 3;
auto work = [&](){
for(int i = 0;i < p[k + 1] - 1;i ++){
int cnt = 0;
int ti = i;
for(int j = 0;j < k + 1;j ++){
cnt += ti % 3;
ti /= 3;
}
if(cnt == other){
int now = 0;
ti = i;
vector<int> c;
for(int j = 0;j < k + 1;j ++){
vector<int> a;
for(int z = now + has + (ti % 3) - 1; z >= now; z -= 8) {
int tmp = 0;
int p = 1;
for(int k = 0; k < 8; k ++ ){
if(z- k >= now)tmp += (s[z - k] - '0') * p;
p *= 10;
}
a.push_back(tmp);
ti /= 3;
}
c = add(c,a);
now = now + has + (ti % 3);
}
if(ans.size() == 0) {
ans = c;
} else {
if(cmp(ans, c)) {
ans = c;
}
}
}
}
return ;
};
work();
has ++;
other -= k + 1;
// for(int i = 0; i < (1 << 2 * (k + 1)); i ++ ) {
// int cnt = 0;
// bool er = 0;
// for(int j = 0; j < 2 * (k + 1); j += 2) {
// int tmp = 0;
// if((i >> j) & 1) {
// cnt ++ ;
// tmp += 2;
// }
// if((i >> (j + 1)) & 1) {
// if((i >> j) & 1)cnt ++;
// tmp += 1;
// }
// if(tmp == 1) {
// er = 1;
// break;
// }
// if(has == 0 && tmp == 0){
// er = 1;
// }
// }
// if(er) continue;
// vector<int> c;
// if(cnt == other) {
// int now = 0;
// for(int j = 0; j < 2 * (k + 1); j += 2) {
// vector<int> a;
// for(int z = now + has + ((i >> j) & 1) + ((i >> j + 1) & 1) - 1; z >= now; z -= 8) {
// int tmp = 0;
// int p = 1;
// for(int k = 0; k < 8; k ++ ){
// if(z - k >= now)tmp += (s[z - k] - '0') * p;
// p *= 10;
// }
// a.push_back(tmp);
// // cout << z << ' ' << tmp << '\n';
// }
// // print(a);
// now = now + has + ((i >> j) & 1) + ((i >> j + 1) & 1);
// c = add(c, a);
// }
// // print(c);
// // cout << '\n';
// if(ans.size() == 0) {
// ans = c;
// } else {
// if(cmp(ans, c)) {
// ans = c;
// }
// }
// }
// }
work();
// 8174657
// if(ans.size() == 25 && ans[0] == 8 && ans[1] == 1 && ans[2] == 7 && ans[3] == 4 && ans[4] == 6 && ans[5] == 5 && ans[6] == 7){
// cout << k << "?" << s.size() << "?" << s << '\n';
// }
print(ans);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
int t = 1;
cin >> t;
while(t -- ) {
solve();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3620kb
input:
2 8 1 45455151 2 1 42
output:
9696 6
result:
ok 2 lines
Test #2:
score: -100
Wrong Answer
time: 96ms
memory: 3688kb
input:
10 1301 6 56328399613959594774559774218276494124991536454496431869449134772679831477279356599352619469813771742358572734317965823527349354276551857226632977613336815474383422853946661428822284645652423563864641261338984158269966469425994769486371736593879954275146732544891889693921182364554588732946...
output:
85672700895277460915772693671260630681792139876433977721486371265011042895070373065912465661810521516989806576456011154148922456436049367795187665203897479582308326859176886406540448358 417558922730395929215422634906837223389852302115876222038106418686504192595983680537510266936427794728997206071754...
result:
wrong answer 1st lines differ - expected: '286183755510664079479706773787...6909797866802717925250679901255', found: '856727008952774609157726936712...9582308326859176886406540448358'