列車調度(隊列實現)
阿新 • • 發佈:2017-10-24
ini == stream int base clu pre new ges
思路:要實現輸出很簡單,關鍵是時間的限制,當時提交了很多次,一直是超時,後來改用二分法,才交上去。
#include<stdio.h> #include<iostream> using namespace std; typedef struct { int *base; int font; int rear; } SqQueue; void InitQueue(SqQueue& L) { L.base=new int[100010]; L.font=0; L.rear=0; } void SqSearch(SqQueue& L, intm) { int r,f,mid; f=L.font; r=L.rear; while(f<r) { mid=(r-f)/2+f; if(L.base[mid]>m)r=mid; else if(L.base[mid]<m)f=mid+1; } L.base[r]=m; } void EnQueue(SqQueue& L,int m) { int length=L.rear-L.font; if(length==0) { L.base[0]=m; L.rear++; } else { if(m>L.base[L.rear-1]) { L.base[L.rear]=m; L.rear++; } else SqSearch(L,m); } } int main() { SqQueue L; InitQueue(L); int n,m; scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&m); EnQueue(L,m); } printf("%d",L.rear-L.font); return 0; }
列車調度(隊列實現)