Advertisement
LinKin

gyffk

May 25th, 2014
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.64 KB | None | 0 0
  1. #pragma comment(linker, "/STACK:16777216")
  2.  
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<math.h>
  6. #include<stdlib.h>
  7. #include<ctype.h>
  8. #include<assert.h>
  9. #include<iostream>
  10. #include<vector>
  11. #include<stack>
  12. #include<queue>
  13. #include<set>
  14. #include<map>
  15. #include<string>
  16. #include<utility>
  17. #include<algorithm>
  18. #include<list>
  19. using namespace std;
  20.  
  21. #define CLR(a) memset(a,0,sizeof(a))
  22. #define SET(a) memset(a,-1,sizeof(a))
  23. #define pb push_back
  24. #define SZ(a) ((long)a.size())
  25. #define ALL(a) a.begin(),a.end()
  26. #define FOREACH(i, c) for( __typeof( (c).begin() ) i = (c).begin(); i != (c).end(); ++i )
  27. #define AREA2(x1,y1,x2,y2,x3,y3) ( x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2) )
  28. #define SQR(x) ((x)*(x))
  29. #define STR string
  30. #define IT iterator
  31. #define ff first
  32. #define ss second
  33. #define MP make_pair
  34. #define EPS 1e-9
  35. #define INF 1000000007
  36.  
  37. #define chk(a,k) ((bool)(a&(1<<(k))))
  38. #define set0(a,k) (a&(~(1<<(k))))
  39. #define set1(a,k) (a|(1<<(k)))
  40.  
  41. typedef long long Long;
  42. typedef vector<long> Vl;
  43. typedef vector<double> VD;
  44. typedef vector<Long> VL;
  45. typedef pair<long,long> Pll;
  46. typedef pair<Long,Long> PLL;
  47.  
  48. inline long FastMax(long x, long y) { return (((y-x)>>(32-1))&(x^y))^y; }
  49. inline long FastMin(long x, long y) { return (((y-x)>>(32-1))&(x^y))^x; }
  50.  
  51. long IR[] = { 0,-1,0,1,-1,-1,1,1 };
  52. long IC[] = { 1,0,-1,0,1,-1,-1,1 };
  53.  
  54. #define MAX 107
  55. #define MOD 1000000007
  56.  
  57. Long L[7],R[7];
  58.  
  59. int main( void )
  60. {
  61.     Long i,j,s,Icase,k = 0;
  62.  
  63.     freopen("text1.txt","r",stdin );
  64.  
  65.     cin>>Icase;
  66.     while( Icase-- ){
  67.         for( i=0;i<4;i++ ){
  68.             cin>>L[i]>>R[i];
  69.             //ans = ( ans*(R[i]-L[i]+1 ) )%MOD;
  70.         }
  71.         Long ans = 0;
  72.         for( s=0;s<16;s++ ){
  73.             Long c = 0,nt[4] = { 0,1,2,3 };
  74.             for( i=0;i<4;i++ ){
  75.                 if( !chk( s,i ) ) continue;
  76.                 c++;
  77.                 nt[i] = (i+1)%4;
  78.             }
  79.             if( c==3 ) continue;
  80.             bool vi[4] = {0};
  81.             Long tot = 1;
  82.             for( i=0;i<4;i++ ){
  83.                 if( vi[i] ) continue;
  84.                 //c++;
  85.                 Long l = L[i],r = R[i];
  86.                 vi[i] = true;
  87.                 while( nt[i]!=i ){
  88.                     i = nt[i];
  89.                     if( vi[i] ) break;
  90.                     vi[i] = true;
  91.                     l = max( l,L[i] );
  92.                     r = min( r,R[i] );
  93.                 }
  94.                 tot = ( tot*max( 0LL, r-l+1 ) )%MOD;
  95.             }
  96.             if( c&1 ) ans -= tot;
  97.             else ans += tot;
  98.             ans %= MOD;//cout<<ans<<endl;
  99.         }
  100.         ans = ( ans+MOD ) %MOD;
  101.         cout<<ans<<endl;
  102.     }
  103.  
  104.     return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement