讨论 / 普及组第二题 帮忙看看为什么只有20分
lijianhet 2008-11-16 02:25:00
点我顶贴 收藏 删除
#include <stdio.h>

int f[1001][1001];

int main()

{

FILE *fin,*fout;

fin=fopen("seat.in","r");

fout=fopen("seat.out","w");

int m,n,k,l,d;

int i,j,x1,x2,y1,y2;

fscanf(fin,"%d%d%d%d%d",&m,&n,&k,&l,&d);

for(i=1;i<=d;i++)

{

fscanf(fin,"%d%d%d%d",&x1,&y1,&x2,&y2);

f[x1][y1]=f[x2][y2]=i;

}

int h[m],s[n];

for(i=1;i<m;i++)

{

h[i]=0;

for(j=1;j<=n;j++)

if(f[i][j]==f[i+1][j] && f[i][j])

h[i]++;

}

for(j=1;j<n;j++)

{

s[j]=0;

for(i=1;i<=m;i++)

if(f[i][j]==f[i][j+1] && f[i][j])

s[j]++;

}

int ff[1001]={0},tt[1001]={0};

while(k)

{

int max=1;

for(i=2;i<m;i++)

if(h[max]<h[i])max=i;

ff[max]=1;

h[max]=0;

k--;

}

while(l)

{

int max=1;

for(i=2;i<n;i++)

if(s[max]<s[i])max=i;

tt[max]=1;

s[max]=0;

l--;

}

for(i=1;i<=1000;i++)

if(ff[i]){fprintf(fout,"%d",i);break;}

for(i++;i<=1000;i++)

if(ff[i])fprintf(fout," %d",i);

fprintf(fout,"\n");

for(i=1;i<=1000;i++)

if(tt[i]){fprintf(fout,"%d",i);break;}

for(i++;i<=1000;i++)

if(tt[i])fprintf(fout," %d",i);

fprintf(fout,"\n");

fclose(fin);

fclose(fout);

return 0;

}

#1 85561642@2008-11-15 22:35:00
回复 删除
我满分
#2 Mato完整版@2008-11-16 02:03:00
回复 删除
我也满分。
#3 Mato完整版@2008-11-16 02:04:00
回复 删除
你是不是结果没排序,比如

2 4

你输出4 2。

#4 lijianhet@2008-11-16 02:25:00
回复 删除
排了

桶排

查看更多回复
提交回复