阅读197 返回首页    go 阿里云 go 技术社区[云栖]


cc Hotel Balifornia 2

    cc的题描述都很奇特的感觉,这是个模拟题,时间限制卡的很严格,如果不手写io操作的话都会上1s,手写io可以降到0.57s。

    看了个大神程序IO用了getchar_unlocked()但是windows下好像不行,就用getchar()代替了

    题目链接

/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#define Maxn 314160
using namespace std;
inline void inp( int &n )//fast input function
{
	n=0;
	int ch=getchar(),sign=1;
	while( ch < '0' || ch > '9' ){if(ch=='-')sign=-1; ch=getchar();}
	while( ch >= '0' && ch <= '9' )
 		n=(n<<3)+(n<<1)+ ch-'0', ch=getchar();
	n=n*sign;
	return;
}
int R[Maxn];//房间客人编码
int room[Maxn],start[Maxn];
int n,m;
int main()
{
    int T,i;
    scanf("%d",&T);
    while(T--)
    {
        inp(n);inp(m);
        memset(R,0,n*sizeof(R[0]));
        int time,inc,now=0,ll=n-1;
        for(i=1;i<=m;i++)
        {
            inp(time);
            inp(inc);
            start[i]=time;
            if(n!=now)//没住满,依次安排
            {
                room[i]=now-inc;
                R[now++]=i;
            }
            else//已住满,赶走之前的人
            {
                if(inc==n){room[i]=0;continue;}//没房间,必须要在这判断,不然坐等超时
                room[i]=ll-inc;
                start[R[ll]]=time-start[R[ll]];
                R[ll]=i;
            }
        }
        ++time;
        for(i=0;i<n;i++)
            start[R[i]]=time-start[R[i]];
        for(i=1;i<=m;i++)
          printf("%d %d\n",room[i],start[i]);
    }
}


最后更新:2017-04-04 07:03:48

  上一篇:go 仿android4.0 Spinner下拉效果
  下一篇:go Oracle中的文件的执行命令