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