Submission #263054

#TimeUsernameProblemLanguageResultExecution timeMemory
263054Valera_GrinenkoPalindrome-Free Numbers (BOI13_numbers)C++17
72.50 / 100
1 ms384 KiB
#pragma GCC optimize("Ofast") #pragma GCC target("avx,avx2,fma") #pragma GCC optimization ("unroll-loops") #include <iostream> #include <fstream> #include <algorithm> #include <vector> #include <set> #include <stack> #include <map> #include <iomanip> #include <cmath> #include <queue> #include <bitset> #include <numeric> #include <array> #include <cstring> #include <random> #include <chrono> #define fi first #define se second #define pb push_back #define mp make_pair #define all(x) (x).begin(), (x).end() #define rall(x) (x).rbegin(), (x).rend() #define make_unique(x) sort(all((x))); (x).resize(unique(all((x))) - (x).begin()) typedef long long ll; typedef long double ld; using namespace std; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); ll dp[20][10][10][2]; //pos, prev1, prev2, (less?) ll solve(string s, bool l) { int n = s.size(); for(int i = 0; i <= n; i++) for(int a = 0; a < 10; a++) for(int b = 0; b < 10; b++) dp[i][a][b][0] = dp[i][a][b][1] = 0; for(int i = 0; i < n; i++) { if(i == 0) { for(int a = 0; a <= s[0] - '0'; a++) dp[i + 1][a][0][a != (s[0] - '0')]++; continue; } if(i == 1) { for(int a = 0; a < 10; a++) for(int b = 0; b < 10; b++) { if(a == b) continue; if(a <= (s[i] - '0')) dp[i + 1][a][b][a < (s[i] - '0')] += dp[i][b][0][0]; dp[i + 1][a][b][1] += dp[i][b][0][1]; } continue; } for(int a = 0; a < 10; a++) for(int b = 0; b < 10; b++) for(int c = 0; c < 10; c++) if(a != b && a != c && b != c) { if(a <= (s[i] - '0')) dp[i + 1][a][b][a < (s[i] - '0')] += dp[i][b][c][0]; dp[i + 1][a][b][1] += dp[i][b][c][1]; } } ll ans = 0; for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) ans += dp[n][i][j][1]; if(l) { for(int i = 0; i < 10; i++) for(int j = 0; j < 10; j++) ans += dp[n][i][j][0]; } return ans; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); string a, b; cin >> a >> b; cout << solve(b, 1) - solve(a, 0); return 0; } /* */

Compilation message (stderr)

numbers.cpp:3: warning: ignoring #pragma GCC optimization [-Wunknown-pragmas]
    3 | #pragma GCC optimization ("unroll-loops")
      |
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...