C++二维数组 70分 TLE救救孩子吧
查看原帖
C++二维数组 70分 TLE救救孩子吧
453809
Marchde楼主2021/4/15 16:41
#include <iostream>
#include <cstring>
using namespace std;

int main()
{
    int** list;

    //input data
    int n;
    cin>>n;
    list =new int*[n];
    int m,time;
    for (int i=0;i<n;++i)
    {
        cin>>time>>m;
        list[i]=new int[m+2];
        list[i][0]=time;
        list[i][1]=m;
        for (int j=0;j<m;++j)
        {
            cin>>list[i][j+2];
        }
    }
    //calculate
    int answer=0;
    int* temp=new int[3000000];
    memset(temp,0,3000000);
    int t1,t2;
    for (int i=0;i<n;++i)
    {
        t2=list[i][0];
        t1=t2-86400;
        for (int j=i;j>=0;--j)
        {
            if (list[j][0]>t1&&list[j][0]<=t2)
            {
                int b=temp[0];
                for (int k=b+1,l=2;k<b+list[j][1]+1;++k,++l)
                {
                    temp[k]=list[j][l];
                    ++temp[0];
                }
            }
            else
            {
                break;
            }
        }
        //将所有满足条件旅客的国籍放到一个数组里面
        for (int k=1;k<temp[0];++k)
        {
            bool is=true;
            for (int l=k+1;l<temp[0]+1;++l)
            {
                if (temp[k]==temp[l])
                {
                    is=false;
                    break;
                }
            }
            if (is)
            {
                ++answer;
            }
        }
        //计算没重复的数
        cout<<answer+1<<endl;
        answer=0;
        memset(temp,0,3000000);
    }
    return 0;
}
2021/4/15 16:41
加载中...