Advertisement
Guest User

Untitled

a guest
Jul 26th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1. #include <cstdio>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <set>
  5.  
  6. using namespace std;
  7.  
  8. typedef unsigned long long llint;
  9.  
  10. const llint A = 8433437992146984169LL;
  11. const llint B = 7905438737954111703LL;
  12.  
  13. llint pw[256], sum[256];
  14. llint now, n;
  15.  
  16. inline int next() {
  17.   now = A*now + B;
  18.   return int( now>>56 );
  19. }
  20.  
  21. vector< unsigned int > v[10];
  22.  
  23. int main( void ) {
  24.   pw[0] = 1, sum[0] = 1;
  25.   for( int i = 1; i < 256; ++i ) {
  26.     pw[i] = pw[i-1]*A;
  27.     sum[i] = sum[i-1] + pw[i];
  28.   }
  29.  
  30.   scanf( "%llu %llu", &n, &now );
  31.   llint ans = n;
  32.   llint i = 0;
  33.   int x = next();
  34.   while( i < n ) {
  35.     while( i < n && x > 4 ) {
  36.       now = now*pw[x] + B*sum[x-1];
  37.       x = next(), i++;
  38.     }
  39.     if( i >= n ) break;
  40.  
  41.     unsigned int y = 0;
  42.     for( int j = 0; j < x; ++j )
  43.       y = y*256 + next();
  44.     v[x].push_back( y );
  45.     i++, x = next();
  46.   }
  47.  
  48.   for( int i = 0; i <= 4; ++i ) {
  49.     sort( v[i].begin(), v[i].end() );
  50.     for( int j = 1; j < v[i].size(); ++j )
  51.       if( v[i][j] == v[i][j-1] ) ans--;
  52.   }
  53.   printf( "%lld\n", ans );
  54.  
  55.   return 0;
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement