10pts求助

P1056 [NOIP2008 普及组] 排座椅

```cpp #include<bits/stdc++.h> using namespace std; int n,k,l,a[1001][1001],d,x,y,z,w,m,q,p,w1[1001],w2[1001]; struct sb{ int id,dx; }b[1001]; struct bs{ int wz,sz; }c[1001]; bool cmp(sb a,sb b) { return a.dx>b.dx; } bool cmp1(bs c,bs d) { return c.sz>d.sz; } int main() { //freopen("seat.in","r",stdin); //freopen("seat.out","w",stdout); scanf("%d%d%d%d%d",&n,&m,&k,&l,&d); for(int i=1;i<=d;i++) { scanf("%d%d%d%d",&x,&y,&z,&w); if(x==z) a[x][y]=a[z][w]=1; else a[x][y]=a[z][w]=2; } for(int i=1;i<n;i++) b[i].id=i; for(int i=1;i<m;i++) c[i].wz=i; for(int i=1;i<=n;i++) { for(int j=2;j<=m;j++) if(a[i][j]==a[i][j-1]&&a[i][j]==1) c[j-1].sz++; } for(int j=1;j<=m;j++) { for(int i=2;i<=n;i++) if(a[i][j]==a[i-1][j]&&a[i][j]==2) b[i-1].dx++; } sort(b+1,b+n+1,cmp); sort(c+1,c+m+1,cmp1); while(k--) { p++; w1[p]=b[p].id; } while(l--) { q++; w2[q]=c[q].wz; } sort(w1+1,w1+p+1); sort(w2+1,w2+q+1); for(int i=1;i<=p;i++) printf("%d ",w1[i]); puts(" "); for(int i=1;i<=q;i++) printf("%d ",w2[i]); } ``` 又改了一下,还是10分
by Thunderbolt_General @ 2022-10-04 17:34:47


可能是你没有从小到大的顺序输出(没看你的代码)
by MUYIIIII @ 2022-10-20 21:35:03


|