| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
what's wrong?#include<stdio.h>
#include<stdlib.h>
#define Max_n 1000
int Dap;
int N,T,M;
struct data1{
int a,b;
}Data[Max_n+1];
void init()
{
int i;
//FILE *fin=fopen("2430.in","r");
//fscanf(fin,"%d %d %d",&N,&T,&M);
scanf("%d %d %d",&N,&T,&M);
for(i=1; i<=N; i++){
// fscanf(fin,"%d %d",&Data[i].a,&Data[i].b);
scanf("%d %d",&Data[i].a,&Data[i].b);
}
// fclose(fin);
}
int sortf(const void *a, const void *b)
{
struct data1 *p=(struct data1 *)a;
struct data1 *q=(struct data1 *)b;
if(p->b > q->b) return 1;
if(p->b < q->b) return -1;
if(p->a > q->a) return 1;
if(p->a < q->a) return -1;
return 0;
}
void process()
{
int i,s,e,k,sw,st,ed,mid,l,cnt;
s=1; e=100000000;
for(;;){
if(s>e) break;
mid=(s+e)/2;
l=mid*2+2;
st=Data[1].b; ed=st+(l-2)/2-1; k=Data[1].a; cnt=1; sw=0;
for(i=2; i<=N; i++){
if(Data[i].b>ed){
cnt++;
if(cnt==T+1) break;
st=Data[i].b; ed=st+(l-2)/2-1; k=Data[i].a; sw=0;
}else if(Data[i].b==ed && sw==0){
if(k!=Data[i].a){
cnt++;
if(cnt==T+1) break;
st=Data[i].b; ed=st+(l-2)/2-1; k=Data[i].a; sw=0;
}
}else{
if(k!=Data[i].a){
if(sw==0){
sw=1;
ed--;
}
}
}
}
if(i==N+1){
Dap=l;
e=mid-1;
}else{
s=mid+1;
}
}
}
void output()
{
printf("%d",Dap);
}
int main()
{
init();
qsort(&Data[1],N,sizeof(Data[0]),sortf);
process();
output();
return 0;
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator