1 条题解

  • 0
    @ 2021-6-15 1:39:27

    C++ :

    #include<iostream>
    #include<cstring>
    #include<algorithm>
    #include<cstdio>
    using namespace std;
    struct zuowei
    {
    	int data;
    	int zw;
    };
    zuowei a[2000],b[2000];
    int a1[2000],b1[2000];
    int m,n,k,l,d;
    void init();
    int my_min(int,int);
    void work();
    int my_comp(const zuowei &,const zuowei &);
    int main()
    {
    	init();
    	work();
    	return 0;
    }
    void init()
    {
    	cin>>m>>n>>k>>l>>d;
    	memset(a,0,sizeof(a));
    	memset(b,0,sizeof(b));
    	int temp1,temp2,temp3,temp4,w;
    	for(int i=1;i<=d;++i)
    	{
    		cin>>temp1>>temp2>>temp3>>temp4;
    		w=my_min(temp2,temp4);
    		if(temp1==temp3)
    		{
    			b[w].data++;
    			b[w].zw=w;
    		}
    		w=my_min(temp1,temp3);
    		if(temp2==temp4)
    		{
    			a[w].data++;
    			a[w].zw=w;
    		}
    	}
    	
    }
    int my_min(int a,int b)
    {
    	if(a<b)return a;
    	else return b;
    }
    int my_comp(const zuowei &a,const zuowei &b)
    {
    	if(a.data>b.data)return 1;
    	if(a.data<b.data)return 0;
    	if(a.zw<b.zw)return 1;
    }
    void work()
    {
    	sort(a+1,a+m+1,my_comp);
    	sort(b+1,b+n+1,my_comp);	
    	for(int i=1;i<=k;++i)
    	{
    		a1[i]=a[i].zw;
    	}
    	for(int i=1;i<=l;++i)
    	{
    		b1[i]=b[i].zw;
    	}
    	sort(a1+1,a1+k+1);
    	sort(b1+1,b1+l+1);
    	for(int i=1;i<=k;i++){
    		if(i==1)
    			cout<<a1[i];
    		else
    			cout<<' '<<a1[i];
    	}
    	cout<<endl;
    	for(int i=1;i<=l;i++){
    		if(i==1)
    			cout<<b1[i];
    		else
    			cout<<' '<<b1[i];
    	}
    	cout<<endl;
    }
    

    Pascal :

    var
      j,m,temp,n,k,l,small,d,i,a,x,b,y:longint;
      hang,lie:array[1..1111]of longint;
      t:array[1..1111]of longint;
    
    function min(a,b:longint):longint;
    begin
      if a>b then exit(b);
      exit(a);
    end;
    
    procedure swap(var a,b:longint);
    var
      t:longint;
    begin
      t:=a;
      a:=b;
      b:=t;
    end;
    
    procedure qsort(l,r:longint);
    var
      i,j,mid,mid2:longint;
    begin
      mid:=t[(l+r) div 2];
      i:=l;
      j:=r;
      repeat
        while t[i]>mid do inc(i);
        while t[j]<mid do dec(j);
        if i<=j then
          begin
            swap(t[i],t[j]);
            inc(i);
            dec(j);
          end;
      until i>j;
      if i<r then qsort(i,r);
      if j>l then qsort(l,j);
    end;
    
    begin
      //assign(input,'seat.in'); reset(input);
      //assign(output,'seat.out'); rewrite(output);
    
      readln(m,n,k,l,d);
      for i:=1 to d do
        begin
          read(a,b,x,y);
          if a<>x then
            inc(hang[min(a,x)])
          else
            inc(lie[min(b,y)]);
        end;
    
      for i:=1 to m do
        t[i]:=hang[i];
      qsort(1,m);
      small:=t[k];
      j:=0;
      for i:=1 to m do
        if hang[i]>=small then
          begin
            inc(j);
            write(i);
            if j<k then write(' ');
            if j=k then break;
          end;
      writeln;
    
      for i:=1 to n do
        t[i]:=lie[i];
      qsort(1,n);
      small:=t[l];
      j:=0;
      for i:=1 to n do
        if lie[i]>=small then
          begin
            inc(j);
            write(i);
            if j<l then write(' ');
            if j=l then break;
          end;
    
      //close(input);
      //close(output);
    end.
    
    
    • 1

    信息

    ID
    261
    时间
    1000ms
    内存
    50MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者