1 条题解
-
0
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
- 上传者