Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

请问哪位高手能帮我找出问题来,或者几组错误数据也可以,谢谢啦!

Posted by hdubfk at 2007-08-08 14:51:12 on Problem 3326
[code]
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
struct node{
	int st;
	int et;
	int pc;
};
node ta[1000];
struct student{
	vector<node> r;
};
student stu[10000];
bool sorted[10000];
bool visit[10000];
bool cmp(node b,node c)
{
	return b.st <c.st ;
}
int main()
{
	int n,m,r,i,j,t,pc,stud,s,q,num;
	node temp;
	while(scanf("%d %d",&n,&m)){
		if(m==0 && n==0) break;
		memset(visit,false,sizeof(visit));
		memset(sorted,false,sizeof(sorted));
		int task=0;
		scanf("%d",&r);
		for(i=0;i<r;i++){
			scanf("%d%d%d%d",&t,&pc,&stud,&s);
			//push
			if(!visit[stud]){
				visit[stud]=true;
				stu[stud].r.clear ();
			}
			if(s==1){
				temp.pc =pc;
				temp.st =t;
				stu[stud].r.push_back (temp);
			}
			//define
			else {
				num=stu[stud].r .size ();
				for(j=num-1;j>=0;j--){
					if(stu[stud].r [j].pc ==pc){
						stu[stud].r [j].et =t;
						break;
					}
				}
			}
		}
		int stime,etime,sum,flag;
		scanf("%d",&q);
		for(i=0;i<q;i++){
			sum=0;
			scanf("%d %d %d",&stime,&etime,&stud);//&iquest;&ordf;&Ecirc;&frac14;&Ecirc;±&frac14;&auml;&pound;&not;&frac12;á&Ecirc;&oslash;&Ecirc;±&frac14;&auml;&pound;&not;&Ntilde;§&Eacute;ú
			if(stu[stud].r.size ()==0) {printf("0\n");continue;}
			if(!sorted[stud]){
				sorted[stud]=true;
				sort(stu[stud].r.begin (),stu[stud].r .end (),cmp);
			}
			//body
			num=stu[stud].r.size();
			//block
			int blocks=0;
			ta[0].st=stu[stud].r [0].st ;
			ta[0].et=stu[stud].r [0].et ;
			for(j=1;j<num;j++){
				if(stu[stud].r [j].st >ta[blocks].et) {
					blocks++;
					ta[blocks].st=stu[stud].r [j].st ;
					ta[blocks].et=stu[stud].r [j].et ;
				}
				else if(stu[stud].r [j].et >ta[blocks].et)
					ta[blocks].et=stu[stud].r [j].et;
			}
			//compute
			for(j=0;j<=blocks;j++){
				if(ta[j].st <=stime && stime<ta[j].et && ta[j].et<etime)
					sum+=ta[j].et-stime;
				else if(stime<=ta[j].st &&ta[j].et<=etime)
					sum+=ta[j].et-ta[j].st;
				else if(stime < ta[j].st && ta[j].st <=etime && etime<ta[j].et)
					sum+=etime-ta[j].st;
				else if(ta[j].st <=stime && ta[j].et >=etime)
					sum+=etime-stime;
				else if(ta[j].st>=etime) break;				
			}
			printf("%d\n",sum); 

		}

	}
	return 0;
}

[/code]

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator