|
|
back to boardwhy I can not get ac ,who can give me some powerful datas or help me check it #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #include<queue> using namespace std; #define N 900000 struct seq { int l; int r; }; seq se[N]; int m; bool cmp(const seq &s1,const seq &s2) { if(s1.l==s2.l) return s1.r>s2.r; return s1.l<s2.l; } int main() { //while(scanf("%d",&m)!=EOF) //{ scanf("%d",&m); int left,right; queue<int>que; while(!que.empty())que.pop(); int i=0,j; while(scanf("%d%d",&left,&right)) { if(left==0&&right==0)break; se[i].l=left; se[i].r=right; i++; } sort(se,se+i,cmp); int rightf=0; int maxlen=0; int num=0; int p=-1; int ff=0; for(j=0;j<i;j++) {
if(se[j].l<=rightf&&se[j].r-rightf>maxlen) { maxlen=se[j].r-rightf; p=j; } else if(p!=-1&&maxlen>0) { que.push(p); rightf=rightf+maxlen; maxlen=0; num++; j=j-1; } if(rightf>=m) { ff=1; break; } } if(maxlen>0) {
rightf=rightf+maxlen; maxlen=0; num++; if(rightf>=m) { que.push(p); ff=1; } } if(ff) { printf("%d\n",num); while(!que.empty()) { int top=que.front(); printf("%d %d\n",se[top].l,se[top].r); que.pop(); } } else printf("No solution\n"); //} return 0; } |
|
|