Advertisement
rnort

Untitled

Apr 7th, 2012
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <time.h>
  3. #define SIZE 100000
  4.  
  5. int main(void)
  6. {
  7.    
  8.  
  9.     char s[SIZE] = {0};
  10.     gets(s);
  11.    
  12.     clock_t start = clock();
  13.     char subs[SIZE] = "-1\0";
  14.     int cb = 0, ce = 0;
  15.     int ab = 0, ae = 0;
  16.  
  17.     for (int i = 0; /*i < SIZE && */ s[i]; ++i){
  18.         cb = i;
  19.         ce = i;
  20.         for (int j = i+1; /*j < SIZE* &&*/ s[j]; ++j)
  21.         {
  22.             if (s[i] == s[j]){
  23.                 for (int k = ((j-i)/2)-1;  k > 0 /*(j-i)/2*/; k /= 2){
  24.                     if ( s[i+k] != s[j-k]){
  25.                         ce = j;
  26.                     }
  27.                 }
  28.             }
  29.             else{
  30.                 ce = j;
  31.             }
  32.         }
  33.         long al  = ae - ab, cl = ce - cb;
  34.         if ( al < cl)
  35.         {
  36.             ae = ce;
  37.             ab = cb;
  38.             continue;
  39.         }
  40.         if (al == cl )
  41.         {
  42.             int i1 = ab,  i2 = cb;
  43.             for (; i1 <= ae, i2 <= ce; ++i1, ++i2){
  44.                 if (s[i1] < s[i2])
  45.                     goto notless;
  46.                 if (s[i1] > s[i2])
  47.                     break;
  48.             }
  49.  
  50.             ae = ce;
  51.             ab = cb;
  52.             notless:
  53.             continue;
  54.         }
  55.     }
  56.     if ((ae-ab) > 0){
  57.         for (int i = ab ; i <= ae; ++i)
  58.             subs[i-ab] = s[i];
  59.         subs[ae-ab+1] = 0;
  60.     }
  61.     double t = (double)((clock() - start) / CLOCKS_PER_SEC) ;
  62.     printf("%s\n%lf",subs, t);
  63.     fflush(stdin);
  64.     getc(stdin);
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement