QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#231068 | #7109. Traveling on the Axis | cciafrino# | WA | 0ms | 4980kb | C++20 | 2.1kb | 2023-10-29 00:28:26 | 2023-10-29 00:28:26 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
using lint = int64_t;
lint solve(string s) {
int N = (int) s.size();
vector<lint> dp(N+1, 0);
// for(int i=N-1; i>=0; i--) {
// if(s[i] == '1') {
// dp[i] = dp_inv[i+1] + 1;
// dp_inv[i] = dp_inv[i+1] + 1 + 1;
// } else {
// dp[i] = dp[i+1] + 1 + 1;
// dp_inv[i] = dp[i+1] + 1;
// }
// }
int cur_s = 0;
for(int i=N-1; i>=0; i--) {
if (i + 1 < N && s[i] == s[i + 1]) {
cur_s += (N - i - 1);
}
int k = s[i] == '0';
dp[i] = (i+1) * lint(i + 2) / 2;
dp[i] += cur_s + dp[i + 1] + k * lint(N - i);
}
// cout << dp[0] << endl;
return dp[0];
// cout << "pd: ";
// for(auto p: dp) cout << p << " ";
// cout << endl;
// cout << "pd inv: ";
// for(auto p: dp_inv) cout << p << " ";
// cout << endl;
// lint cont = 0;
// for(int i=0; i<N; i++) {
// cont += dp[i] * (N-i);
// cout << i << " * " << (N-i) << endl;
// }
// cout << endl;
// for(int i=0; i<N; i++) {
// if(s[i] == '1') {
// cont -= ( dp_inv[i] ) * ( (i)/2 );
// cont -= ( dp[i] - 1 ) * ( (i+1)/2 );
// } else {
// cont -= ( dp[i] - 1 ) * ( (i)/2 );
// cont -= ( dp_inv[i] ) * ( (i+1)/2 );
// }
// cout << i << " + " << (s[i] == '1' ? 1 : 0) << " ) * " << ( (i)/2 ) << endl;
// }
// cout << endl;
// for(int i=0; i<N; i++) {
// cont -= ( dp[i] - (s[i] == '0' ? 1 : 0) ) * ( (i+1)/2);
// cout << i << " + " << (s[i] == '0' ? 1 : 0) << " ) * " << ( (i+1)/2 ) << endl;
// }
// cout << endl;
// return cont;
}
// if (s == 1) dp(i) += dp(i-1) + 2
// else dp(i) += dp(i-1) + 1
// if (s_i == s_i+1) dp(i) += (i-1) * 2
// else dp(i) += (i-1)
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int T; cin >> T;
while (T--) {
string s; cin >> s;
cout << solve(s) << '\n';
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3820kb
input:
3 101 011 11010
output:
12 15 43
result:
ok 3 lines
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 4980kb
input:
6107 1010101 010110100110101 1010 1010101010010101010 101011 0101101011010101010 0101101011 11011010101 010 1011010 10110101010101010100 010101010110101 10101010101011 0101010101010101011 00101010011000 1010101010010110110 01010101001010101010 101010101010101 100100101010101010 01 011 0101010100101 ...
output:
96 889 24 1515 69 1567 279 345 14 106 1702 791 621 1447 764 1615 1755 736 1333 6 15 542 44 1689 1515 140 833 497 596 24 1640 694 462 30 425 14 1041 1446 96 504 124 75 560 970 771 945 6 1 321 137 786 720 206 769 46 103 225 74 554 2 100 529 260 207 197 2 197 1041 140 857 207 1 74 1604 41 343 1041 14 1...
result:
wrong answer 6105th lines differ - expected: '333343333400000', found: '185321580510656'