BABA

Run Settings
LanguageC++
Language Version
Run Command
#include <bits/stdc++.h> using namespace std; // type typedef long long ll; typedef long double ld; // loop //#define For(i, l, r, x) for (int i = l; i < r; i+=x) //#define ForE(i, l, r, x) for (int i = l; i <= r; i+=x) //#define Ford(i, r, l) for (int i = r; i > l; i--) //#define FordE(i, r, l) for (int i = r; i >= l; i--) //#define Fora(i, a) for (auto i : a) // I/O #define FAST_IO std::ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); //#define PrintV(a) Fora(ii, a) cout << ii << ' '; cout << rl; //#define PrintVl(a) Fora(ii, a) cout << ii << rl; //#define PrintA(a, l, r) for (int ii = l; ii <= r; ii++) cout << a[ii] << ' '; cout << rl; //#define PrintAl(a, l, r) for (int ii = l; ii <= r; ii++) cout << a[ii] << rl; //#define Ptest(x) return cout << x, 0; #define setpre(n) fixed << setprecision(n) // pair #define F first #define S second #define pii pair<int, int> #define pll pair<ll, ll> #define pdd pair<ld, ld> // vector & !!?(string) #define eb emplace_back #define pb push_back #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() #define sz(a) a.size() #define len(a) a.length() // geometry calc #define pi acos(-1.0) #define g_sin(a) sin(a*pi/180) #define g_cos(a) cos(a*pi/180) #define g_tan(a) tan(a*pi/180) // set val #define ms0(a) memset(a, 0, sizeof(a)); #define ms1(a) memset(a, 1, sizeof(a)); #define msn1(a) memset(a, -1, sizeof(a)); #define msinf(a) memset(a, 0x3f3f3f, sizeof(a)); // constant const int mod1 = 998244353, mod = 1e9+7; const int MAX_N = 100005, MAX_M = 200010; // code //#define int long long int arr[(int) 1e7 + 1]; int par[33], v; void get(string &a, string s){ if (s.length() > a.length()) {a = s; return;} else if (s.length() != a.length()) return; for (int i = 0; i < a.length(); i++){ if (a[i] < s[i]) {a = s; return;} else if (a[i] > s[i]) return; } } void Solve() { string s; cin >> s >> v; for (int i = 0; i < s.length(); i++){ arr[i+1] = (arr[i] * 10 + s[i] - '0') % 33; } for (int i = 0; i < 33; i++){ par[i] = i*10 % 33; //cout << i << ' ' << par[i] << endl; } //for (int i = 0; i <= s.length(); i++) cout << arr[i] << ' '; cout << endl; if (v == 1){ map<int, int> cnt; int ans = 0; for (int i = 0; i <= s.length(); i++){ int val = arr[i]; if (cnt.count(par[val])){ ans += cnt[par[val]]; } cnt[val] ++; } cout << ans; }else{ map<int, int> idx; string ans = ""; for (int i = 0; i <= s.length(); i++){ int val = arr[i]; if (idx.count(par[val])){ string t = s.substr(idx[par[val]], i - idx[par[val]]); get(ans, t); } idx[val] = i; } cout << ans; } } signed main(){ FAST_IO; int TC = 1; //cin >> TC; while(TC--) Solve(); return 0; }
Editor Settings
Theme
Key bindings
Full width
Lines