prob3730.cpp

来自「这是北京大学OJ 第3730题的解答,供参考并提出意见.」· C++ 代码 · 共 70 行

CPP
70
字号
#include<stdio.h>
#include<stdlib.h>
#define TimeLimit 120
#define MAXLINE 100000

void StepLatter(int a[MAXLINE])
{
     for(long i=MAXLINE;i>0;i--)
     a[i]=a[i-1];
     a[0]=0;
}

bool isTimeOverUp(int sum[],int a[])
{int TempSum[MAXLINE]={0};
     for(long i=0;i<MAXLINE;i++)
     {
              TempSum[i]=sum[i]+a[i];
              if(TempSum[i]>TimeLimit)return 1;
     }
     return 0;
}
int main()
{
int n,m;

int sum[MAXLINE]={0};
int a[MAXLINE]={0};

freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);


scanf("%d%d",&n,&m);

int *sch=new int[m];
//printf("%d%d",n,m);

for(int i=0;i<m;i++)
scanf("%d",sch+i);
//for(int i=0;i<m;i++)
//printf("\n%d",sch[i]);

a[0]=80;
for(int i=0;i<m;i++)
{a[sch[i]-1]=40;}



int k;long count=0;
for(long i=0;i<MAXLINE;i++){sum[i]=a[i];}

for (k=0;k<n-1;k++)
{
    while(isTimeOverUp(sum,a))
    {
       StepLatter(a);count++;
    }
//    printf("\n%d",count);

    for(long i=0;i<MAXLINE;i++)
    {sum[i]=sum[i]+a[i];}
}

printf("%d\n",count+sch[m-1]);

return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?