救救孩子,用的动态数组40分
查看原帖
救救孩子,用的动态数组40分
386235
Snmn楼主2021/1/5 23:08

救救孩子,用的动态数组40分,貌似总要少几个坚果

#include <stdio.h>
#include <algorithm>
int n;
struct zm{
    int p;
    int t;
}a[2005];
int *s[2005];
int c[2005];
int main(){
    scanf("%d", &n);
    for (int i = 1; i <= n; i++){
        scanf("%d%d", &a[i].p, &a[i].t);
        c[a[i].p]++;
    }
//    for (int i = 1; i <= 2000; i++){
//        printf("%d ", c[i]);
//    }
 //   printf("\n");
    for (int i = 1; i <= 2000; i++)
    {
        s[i] = new int[c[i]];
    }
    for (int i = 1; i <= 2000; i++){
        *s[i] = -1;
    }
    for (int i = 1; i <= n; i++)
    {
       *s[a[i].p] = a[i].t;
        s[a[i].p]++;
    }
//    printf("\n");
    for (int i = 1; i <= 2000; i++){
        s[i] -= c[i];
        std::sort(s[i], s[i] + c[i]);
    }
//    for (int i = 1; i <= 2000; i++){
//        printf("%d: ", i);
//        for (int j = 1; j <= c[i]; j++, s[i]++){
//            printf("%d ", *s[i]);
//        }
//        printf("\n");
//    }
    int ans = 0;
    for (int i = 1; i <= 2000; i++){
        if (c[i] != 0){
            ans++;
        }
    }
        for (int i = 1; i <= 2000; i++)
        {
            s[i]++;
            for (int j = 1; j < c[i]; j++, s[i]++)
            {
                if (*s[i] - *(s[i] - 1) >= 60)
                {
                    ans++;
                }
            }
        }
    printf("%d", ans);
    system("pause");
    return 0;
}

怕不是我题意理解错了?? 求助大佬.

2021/1/5 23:08
加载中...