注意走廊两边的房间共用一个走廊。
这意味着,类似1 3, 4 5这种情况没法同时搬运,我们需要对这种情况进行调整。
# include<stdio.h>
# include<vector>
#include<malloc.h>
#include<string.h>
# include<algorithm>
using namespace std;
int A[201], B[201], sigt[201];
typedef struct P{
int start;
int end;
}P;
bool compare(P a, P b){
if(a.end <= b.end)
return true;
else return false;
}
// bool compare(P a, P b){
// if(a.start == b.start) return a.end < b.end;
// else return a.start<b.start;
// }
int main(){
int N;
while(scanf("%d",&N)!=EOF){
for(int i=0;i<N;i++){
memset(sigt, 0, sizeof(sigt));
int n;
vector<P> V;
scanf("%d",&n);
for(int j=0;j<n;j++){
scanf("%d %d", &A[j],&B[j]);
if(A[j] > B[j]){
int temp;
temp = A[j];
A[j] = B[j];
B[j] = temp;
}
//?????????????1 3?4 5??????????????????? 1 3?4 5 ?? 1 4, 3 5???????
// if(A[j]%2==0) A[j]--;
// if(B[j]%2==1) B[j]++;
V.push_back({A[j],B[j]});
}
sort(V.begin(),V.end(),compare);
for(int h=0;h<n;h++){
printf("%d %d\n",V[h].start, V[h].end);
}
int count = 0;
for(int k=0;k<n;k++){
if(sigt[k]==0){
count++;
int t=V[k].end;
for(int j=k+1;j<n;j++){
if(V[j].start>t && sigt[j]==0){
printf("t:%d\n", t );
t = V[j].end;
sigt[j]=1;
}
}
}
}
printf("%d\n",count*10);
}
}
getchar();
getchar();
return 0;
}












网友评论