Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define fr(a,b,c) for(int (a) = (b); (a) < (c); ++(a))
- #define rp(a,b) fr(a,0,b)
- #define fre(a,b) for(int a = adj[b]; ~a; a = ant[a])
- #define cl(a,b) memset((a), (b), sizeof(a))
- #define sc(a) scanf("%d", &a)
- #define sc2(a,b) scanf("%d%d", &a, &b)
- #define sc3(a,b,c) scanf("%d%d%d", &a, &b, &c)
- #define scs(s) scanf("%s", s)
- #define pri(x) printf("%d\n", x)
- #define iter(a) __typeof((a).begin())
- #define fore(a,b) for(iter(b) a = (b).begin(); a != (b).end(); ++a)
- #define st first
- #define nd second
- #define mp make_pair
- #define pb push_back
- #define db(x) cerr << #x << " == " << x << endl
- #define dbs(x) cerr << x << endl
- #define _ << ", " <<
- const int oo = 0x3f3f3f3f;
- typedef long long ll;
- typedef pair<int,int> pii;
- typedef vector<int> vi;
- typedef vector< vi > vii;
- typedef unsigned long long ull;
- #define MOD 1000000007
- char str[100010];
- int n;
- unordered_set<int> s;
- bool test(int x) {
- s.clear();
- rp(i,n-x+1) {
- int h = 0;
- fr(j,i,i+x) {
- h = ((h<<1) + (str[j] == '-'))%MOD;
- }
- if (s.count(h)) return true;
- s.insert(h);
- }
- return false;
- }
- void proc(int x) {
- s.clear();
- rp(i,n-x+1) {
- int h = 0;
- fr(j,i,i+x) {
- h = ((h<<1) + (str[j] == '-'))%MOD;
- }
- if (s.count(h)) {
- fr(j,i,i+x) {
- printf("%c", str[j]);
- }
- puts("");
- return;
- }
- s.insert(h);
- }
- }
- int main() {
- scs(str);
- n = strlen(str);
- int ini = 0, fim = n;
- while (ini < fim) {
- int m = (ini+fim+1)>>1;
- if (test(m)) ini = m;
- else fim = m-1;
- }
- if (ini < 3) puts("*");
- else proc(ini);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement