社区讨论

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 条回复,欢迎继续交流。

正在加载回复...