1 条题解
-
0
C :
#include <stdio.h> #include <stdlib.h> typedef struct Map { int id,value; }map; int cmp(const void *a,const void *b) { return ((map*)a)->value<((map*)b)->value; } int cmp2(const void *a,const void *b) { return ((map*)b)->id<((map*)a)->id; } int main() { int x1,y1,x2,y2,i,j,k,m,n,l,d,max; map row[1001],col[1001]; scanf("%d%d%d%d%d",&m,&n,&k,&l,&d); memset(row,0,sizeof(int)*(n+1)); memset(col,0,sizeof(int)*(m+1)); for (i=1;i<=d;i++) { scanf("%d%d%d%d",&x1,&y1,&x2,&y2); if (x1==x2) { col[y1<y2?y1:y2].value++; col[y1<y2?y1:y2].id=y1<y2?y1:y2; } if (y1==y2) { row[x1<x2?x1:x2].value++; row[x1<x2?x1:x2].id=x1<x2?x1:x2; } } qsort(row+1,m,sizeof(map),cmp); qsort(row+1,k,sizeof(map),cmp2); qsort(col+1,n,sizeof(map),cmp); qsort(col+1,l,sizeof(map),cmp2); for (i=1;i<=k;i++) { printf("%d",row[i].id); if (i<k) printf(" "); } printf("\n"); for (i=1;i<=l;i++) { printf("%d",col[i].id); if (i<l) printf(" "); } return 0; }
C++ :
#include<iostream> #include<cstring> #include<algorithm> using namespace std; int M,N,k,l,D,a1,a2,b1,b2; bool K[1010],L[1010]; int A[1010],B[1010]; int A1[1010],B1[1010]; int I=0,J=0; void in(); void out1(); void out2(); int main() { in(); int i=0; while(1) { if(i==D)break; i++; cin>>a1>>b1>>a2>>b2; if(b1==b2) { if(a1>a2)a1=a2; K[a1]=true; A[a1]++; continue; } if(a1==a2) { if(b1>b2)b1=b2; L[b1]=true; B[b1]++; continue; } } out1(); out2(); return 0; } void in() { cin>>M>>N>>k>>l>>D; memset(K,0,sizeof(K)); memset(L,0,sizeof(L)); memset(A,0,sizeof(A)); memset(B,0,sizeof(B)); memset(A1,0,sizeof(A)); memset(B1,0,sizeof(B)); } void out1() { for(int i=1;i<=k;i++) { int max=0,c; for(int j=1;j<=M;j++) { if(K[j]==true&&A[j]>max) { max=A[j]; c=j; } } A[c]=0; A1[I]=c; I++; } sort(A1,A1+k); for(int i=0;i<k-1;i++) cout<<A1[i]<<' '; cout<<A1[k-1]<<endl; } void out2() { for(int i=1;i<=l;i++) { int max=0,c; for(int j=1;j<=N;j++) { if(L[j]==true&&B[j]>max) { max=B[j]; c=j; } } B[c]=0; B1[J]=c; J++; } sort(B1,B1+l); for(int i=0;i<l-1;i++) cout<<B1[i]<<' '; cout<<B1[l-1]<<endl; }
Pascal :
var m,n,k,l,d,q,w,e,r,i,j,max,u,f:longint; a,b,uu:array[1..1000]of longint; procedure sw(var i,j:longint); var p:longint; begin p:=uu[i];uu[i]:=uu[j];uu[j]:=p; inc(i);dec(j); end; procedure qsort(i,j:longint); var l,r,mid:longint; begin l:=i;r:=j;mid:=uu[(l+r) div 2]; repeat while uu[i]<mid do inc(i); while uu[j]>mid do dec(j); if i<=j then sw(i,j); until i>j; if i<r then qsort(i,r); if l<j then qsort(l,j); end; begin readln(m,n,k,l,d); for i:=1 to d do begin readln(q,w,e,r); if q=e then if w<r then inc(a[w]) else inc(a[r]); if w=r then if q<e then inc(b[q]) else inc(b[e]); end; for i:=1 to k do begin max:=0; for j:=1 to m-1 do if b[j]>max then begin max:=b[j];f:=j;end; inc(u);uu[u]:=f;b[f]:=0; end; qsort(1,u); for i:=1 to u-1 do write(uu[i],' '); writeln(uu[u]); u:=0; for i:=1 to l do begin max:=0; for j:=1 to n-1 do if a[j]>max then begin max:=a[j];f:=j; end; inc(u);uu[u]:=f;a[f]:=0; end; qsort(1,u); for i:=1 to u-1 do write(uu[i],' '); writeln(uu[u]); end.
- 1
信息
- ID
- 696
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者