POJ 1068模拟法
#include<iostream> using namespace std; int flag1[100],jilu[100]; int le[100],ri[100]; int main() { int n,m; cin>>n; while(n--) { cin>>m; memset(flag1,0,sizeof(flag1)); memset(le,0,sizeof(le)); memset(ri,0,sizeof(ri)); int ss,temp=0,l=0,r=0; for(int i=0;i<2*m;) { cin>>ss; for(int j=ss-temp;j>=1;j--) le[l++]=i++; ri[r++]=i++; temp=ss; } for(int i=0;i<r;) { for(int j=l-1;j>=0;j--) { if(!flag1[j]&&(ri[i]>le[j])) { flag1[j]=1; cout<<(ri[i]-le[j]+1)/2; if(i!=r-1){ cout<<" ";} i++; break; } } } cout<<endl; } return 0; }