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