Advertisement
double_trouble

Untitled

Jul 17th, 2014
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <stdio.h>
  3. using namespace std;
  4.  
  5. long long k[1100][3],l[1100][3],ans[2100];
  6.  
  7. void qqsort(long lv, long pr);
  8. void qsort(long l, long r);
  9.  
  10. int main()
  11. {
  12.     freopen("input.txt", "r", stdin);
  13.     freopen("output.txt", "w", stdout);
  14.     long long n,m,kol,max,s;
  15.     cin>>n>>m;
  16.     for (long i=0; i<n ; i++)
  17.         for (long j=0; j<3; j++)
  18.             cin>>k[i][j];
  19.     kol=-1;
  20.     for (long i=0; i<m; i++)
  21.         for (long j=0; j<3; j++)
  22.         {
  23.             cin>>l[i][j];
  24.             if(j==1 && l[i][j]>0)
  25.             {
  26.                 kol++;
  27.                 ans[kol]=l[i][0];
  28.             }
  29.         }
  30.     s=-1;
  31.      max=k[0][1];
  32.      for  (long i=0; i<n; i++)
  33.      {
  34.          if (k[i][1]>0)
  35.             s++;
  36.         if (k[i][1]>max)
  37.             max=k[i][1];
  38.      }
  39.     qqsort(0,n-1);
  40.     for (long i=0; i<n; i++)
  41.         if (k[i][1]>=1 && (k[i][1]==max || k[i][1]>k[s/2][1]))
  42.     {
  43.         kol++;
  44.         ans[kol]=k[i][0];
  45.     }
  46.     qsort(0,kol);
  47.     /*for (int i=0; i<s; i++)
  48.     {
  49.         for (int j=0; j<3; j++)
  50.             cout<<k[i][j]<<" ";
  51.         cout<<endl;
  52.     }*/
  53.     cout<<kol+1<<endl;
  54.     for (long i=0; i<kol+1; i++)
  55.         cout<<ans[i]<<" ";
  56.     return 0;
  57. }
  58.  
  59. void qqsort(long lv, long pr)
  60. {
  61.     long i=lv;
  62.     long j=pr;
  63.     long long x=k[(lv+pr)/2][1];
  64.     long long y=k[(lv+pr)/2][2];
  65.     long z=0;
  66.     do
  67.     {
  68.         while (k[i][1]>x ||(k[i][1]==x && k[i][2]<y))
  69.             i++;
  70.         while (k[j][1]<x ||(k[j][1]==x && k[j][2]>y))
  71.             j--;
  72.         if (i<=j)
  73.         {
  74.           z=k[i][0];
  75.           k[i][0]=k[j][0];
  76.           k[j][0]=z;
  77.           z=k[i][1];
  78.           k[i][1]=k[j][1];
  79.           k[j][1]=z;
  80.           z=k[i][2];
  81.           k[i][2]=k[j][2];
  82.           k[j][2]=z;
  83.           i++;
  84.           j--;
  85.         }
  86.     }
  87.     while (i<=j);
  88.     if (lv<j)
  89.         qqsort(lv,j);
  90.     if (pr>i)
  91.         qqsort(i,pr);
  92. }
  93.  
  94.  
  95. void qsort (long l, long r)
  96. {
  97.     long i=l;
  98.     long j=r;
  99.     long d=ans[(l+r)/2];
  100.     long x=0;
  101.     do
  102.     {
  103.         while (ans[i]<d)
  104.             i++;
  105.         while (ans[j]>d)
  106.             j--;
  107.         if (i<=j)
  108.         {
  109.           x=ans[i];
  110.           ans[i]=ans[j];
  111.           ans[j]=x;
  112.           i++;
  113.           j--;
  114.         }
  115.     }
  116.     while (i<=j);
  117.     if (l<j)
  118.         qsort(l,j);
  119.     if (r>i)
  120.         qsort(i,r);
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement