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

wa wa wa....wa wa wa.....

Posted by ljfljf2007 at 2009-09-08 17:20:29 on Problem 2938
#include "stdafx.h"
#include "string.h"
#include "math.h"
#include <queue>
#include <algorithm>
#include <iostream>
#define MinN(x,y) ((x)<(y)?(x):(y))
#define MaxN(x,y) ((x)>(y)?(x):(y))
#define _clr(a,b) memset(a,b,sizeof(a))
template<class T> void _swap(T& a,T& b)
{T temp;temp=a;a=b;b=temp;}
template<class T> T _abs(T a)
{if(a<0) a=-a;return a;}
using namespace std;
int Tran(char a[])
{
	int ans=0;
	for(int i=0;i<=9;i+=3)
	{
		ans*=100;
		ans+=(a[i]-'0')*10+(a[i+1]-'0');
	}
	return ans;
}
int cnt[1005],time[1005];
bool important[1005];
int main()
{
	freopen("e:\\1.in","r",stdin);
	//freopen("e:\\1.out","w",stdout);
	int temp1;
	int temp2;
	bool temp3;
	int n;
	char temp_char[25];
	while(scanf("%d",&n)&&n!=0)
	{
		_clr(cnt,0);
		_clr(time,0);
		time[0]=-1;
		cnt[0]=0;
		important[0]=false;
		time[n+1]=-1;
		//important[n+1]=true;
		for(int i=1;i<=n;i++)
		{
			scanf("%s",temp_char);
			time[i]=Tran(temp_char);
			scanf("%s",temp_char);
			scanf("%s",temp_char);
			if(temp_char[0]=='+') important[i]=true;
			else important[i]=false;
		}
		for(int i=1;i<=n;i++)
		{
			if(important[i]==true)
			{
				if(important[i-1]==true) cnt[i]=cnt[i-1]+1;
				else
				{
					if(time[i]<=time[i-1]) cnt[i]=cnt[i-1]+1;
					else// if(time[i]>time[i-1])
					{
						if(time[i]<=time[i-2]) 
						{
							temp1=time[i-1];
							temp2=cnt[i-1];
							temp3=important[i-1];
							time[i-1]=time[i-2]; 
							cnt[i-1]=cnt[i-2];
							important[i-1]=important[i-2];
							time[i]=temp1; 
							cnt[i]=temp2;
							important[i]=temp3;
							cnt[i]=cnt[i-1];
						}
						else cnt[i]=cnt[i-1]+1;
					}
				}
			}
			else
			{
				if(time[i]<=time[i-1]) cnt[i]=cnt[i-1]+1;
				else 
				{
					if(important[i-1]==false)
					{
						temp1=time[i-1];
						temp2=cnt[i-1];
						temp3=important[i-1];
						time[i-1]=time[i-2]; 
						cnt[i-1]=cnt[i-2];
						important[i-1]=important[i-2];
						if(time[i]>time[i-2]) 
						{
							time[i]=temp1;
						}
						cnt[i]=temp2;
					}
					else
					{
						if(time[i]>=time[i+1]&&time[i-1]<time[i+1])
						{
							cnt[i]=cnt[i-1]+1;
						}
						else
						{
							temp1=time[i-1];
							temp2=cnt[i-1];
							temp3=important[i-1];
							time[i-1]=time[i-2]; 
							cnt[i-1]=cnt[i-2];
							important[i-1]=important[i-2];
							time[i]=temp1; 
							cnt[i]=temp2;
							important[i]=temp3;
						}
					}
				}
			}
		}
		printf("%d\n",cnt[n]);
	}
	return 0;
}

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