社区讨论
50分,看完数据懵逼
P1056[NOIP 2008 普及组] 排座椅参与者 4已保存回复 9
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 9 条
- 当前快照
- 1 份
- 快照标识符
- @mi6gyflo
- 此快照首次捕获于
- 2025/11/20 04:42 4 个月前
- 此快照最后确认于
- 2025/11/20 04:42 4 个月前
测试点1没过,下载下来发现的结尾有个回车
于是就在输出的结尾加上一个回车,为什么,第一个点还是没过……
哦还有,依然50分,通过的点也没变
附上代码
CPP#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int m, n, k, l, d;
scanf("%d%d%d%d%d", &m, &n, &k, &l, &d);
int x[m+1][2],y[n+1][2];
for(int i = 0 ; i <= m ; i++)
{
x[i][0] = 0;
x[i][1] = i;
}
for(int i = 0 ; i <= n ; i++)
{
y[i][0] = 0;
y[i][1] = i;
}
for(int i = 0 ; i < d ; i++)
{
int x1, x2, y1, y2;
scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
if(x1 == x2)
y[min(y1, y2)][0]++;
else
x[min(x1, x2)][0]++;
}
for(int i = 0 ; i <= m ; i++)
{
for(int j = 0 ; j <= m ; j++)
{
if(x[j][0] < x[j+1][0])
{
int t1 = x[j][0];
int t2 = x[j][1];
x[j][0] = x[j+1][0];
x[j+1][0] = t1;
x[j][1] = x[j+1][1];
x[j+1][1] = t2;
}
}
}
for(int i = 0 ; i <= n ; i++)
{
for(int j = 0 ; j <= n ; j++)
{
if(y[j][0] < y[j+1][0])
{
int t1 = y[j][0];
int t2 = y[j][1];
y[j][0] = y[j+1][0];
y[j+1][0] = t1;
y[j][1] = y[j+1][1];
y[j+1][1] = t2;
}
}
}
int fx[k+1], fy[l+1];
memset(fx, 0, sizeof(fx));
memset(fy, 0, sizeof(fy));
for(int i = 0 ; i <= k ; i++)
fx[i] = x[i][1];
for(int i = 0 ; i <= l ; i++)
fy[i] = y[i][1];
sort(fx+0, fx+k+1);
sort(fy+0, fy+l+1);
/*
for(int i = 0 ; i <= k ; i++)
{
for(int j = 0 ; j <= k ; j++)
{
if(fx[j] > fx[j+1]);
{
int t = fx[j];
fx[j] = fx[j+1];
fx[j+1] = t;
}
}
}
for(int i = 0 ; i <= l ; i++)
{
for(int j = 0 ; j <= l ; j++)
{
if(fy[j] > fy[j+1]);
{
int t = fy[j];
fy[j] = fy[j+1];
fy[j+1] = t;
}
}
}
*/
for(int i = 0 ; i < k-1 ; i++)
{
if(fx[i])
printf("%d ", fx[i]);
else
k++;
}
printf("%d", fx[k-1]);
printf("\n");
for(int i = 0 ; i < l-1 ; i++)
{
if(fy[i])
printf("%d ", fy[i]);
else
l++;
}
printf("%d", fy[l-1]);
printf("\n");
return 0;
}
回复
共 9 条回复,欢迎继续交流。
正在加载回复...