系统好坑, 全局变量s我开始用的i和局部变量一样,, 然后就一直通过不了。。 后来改成S就好了。
参考:http://www.cnblogs.com/liyukuneed/archive/2013/05/26/3090402.html
#include<iostream>
#define maxn 500002
using namespace std;
int pc[maxn];
int ln[maxn];
void insert_(int &len_ , int &num_);
int main()
{
int n , p , r;
int sb = 1;
while(cin >> n)
{
int len = 1 ;
for(int i = 0 ; i < n ; i ++)
{
cin>> p >> r;
pc[p] = r;
}
ln[1] = pc[1];
for(int i = 1 ; i <= n ; i++)insert_(len,pc[i]);
printf("Case %d:\nMy king, at most %d road",sb++,len);
if(len!=1) printf("s");
printf(" can be built.\n\n");
}
return 0;
}
void insert_(int &len_,int &num_)
{
int t,b,m;
t = 1;
b = len_;
while(t <= b)
{
m = (t+b)/2;
if(ln[m] < num_)// <= 出错,因为main中初始化ln[1]=pc[1]
t = m+1;
else
b = m-1;
}
ln[t] = num_;
if(t > len_)len_++;
}