閱讀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中的文件的執行命令