Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- using namespace std;
- long long k[1100][3],l[1100][3],ans[2100];
- void qqsort(long lv, long pr);
- void qsort(long l, long r);
- int main()
- {
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- long long n,m,kol,max,s;
- cin>>n>>m;
- for (long i=0; i<n ; i++)
- for (long j=0; j<3; j++)
- cin>>k[i][j];
- kol=-1;
- for (long i=0; i<m; i++)
- for (long j=0; j<3; j++)
- {
- cin>>l[i][j];
- if(j==1 && l[i][j]>0)
- {
- kol++;
- ans[kol]=l[i][0];
- }
- }
- s=-1;
- max=k[0][1];
- for (long i=0; i<n; i++)
- {
- if (k[i][1]>0)
- s++;
- if (k[i][1]>max)
- max=k[i][1];
- }
- qqsort(0,n-1);
- for (long i=0; i<n; i++)
- if (k[i][1]>=1 && (k[i][1]==max || k[i][1]>k[s/2][1]))
- {
- kol++;
- ans[kol]=k[i][0];
- }
- qsort(0,kol);
- /*for (int i=0; i<s; i++)
- {
- for (int j=0; j<3; j++)
- cout<<k[i][j]<<" ";
- cout<<endl;
- }*/
- cout<<kol+1<<endl;
- for (long i=0; i<kol+1; i++)
- cout<<ans[i]<<" ";
- return 0;
- }
- void qqsort(long lv, long pr)
- {
- long i=lv;
- long j=pr;
- long long x=k[(lv+pr)/2][1];
- long long y=k[(lv+pr)/2][2];
- long z=0;
- do
- {
- while (k[i][1]>x ||(k[i][1]==x && k[i][2]<y))
- i++;
- while (k[j][1]<x ||(k[j][1]==x && k[j][2]>y))
- j--;
- if (i<=j)
- {
- z=k[i][0];
- k[i][0]=k[j][0];
- k[j][0]=z;
- z=k[i][1];
- k[i][1]=k[j][1];
- k[j][1]=z;
- z=k[i][2];
- k[i][2]=k[j][2];
- k[j][2]=z;
- i++;
- j--;
- }
- }
- while (i<=j);
- if (lv<j)
- qqsort(lv,j);
- if (pr>i)
- qqsort(i,pr);
- }
- void qsort (long l, long r)
- {
- long i=l;
- long j=r;
- long d=ans[(l+r)/2];
- long x=0;
- do
- {
- while (ans[i]<d)
- i++;
- while (ans[j]>d)
- j--;
- if (i<=j)
- {
- x=ans[i];
- ans[i]=ans[j];
- ans[j]=x;
- i++;
- j--;
- }
- }
- while (i<=j);
- if (l<j)
- qsort(l,j);
- if (r>i)
- qsort(i,r);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement