/*
逆时针旋转90度,通过数组下标转换实现
#include<stdio.h>
#include<stdlib.h>
int data[1020][1020]={0};
int datax[1020][1020]={0};
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i=0,j=0;
for(i=0;i<n;i++){
for(j=0;j<m;j++){
scanf("%d",&data[i][j]);
}
}
for(i=0;i<n;i++){
for(j=0;j<m;j++){
datax[j][i]=data[i][m-j-1];
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
printf("%d ",datax[i][j]);
}
printf("\n");
}
return 0;
}*/
/*
hash首先保存数组数据,对下标和数值同步排序,输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int hash[1020];
int num[1020];
int numj[1020];
int main()
{
int n;
int i,j;
int tmp,tmpj;
scanf("%d",&n);
memset(num,0,sizeof(num));
for(i=0;i<1020;i++){
numj[i]=i;
}
for(i=0;i<n;i++){
scanf("%d",&hash[i]);
num[hash[i]]++;
}
for(i=0;i<n;i++){
for(j=0;j<n-i-1;j++){
if(num[j]<num[j+1]){
tmp=num[j];
num[j]=num[j+1];
num[j+1]=tmp;
tmpj=numj[j];
numj[j]=numj[j+1];
numj[j+1]=tmpj;
}
}
}
for(i=0;i<1020;i++){
if(num[i]!=0){
printf("%d ",numj[i]);
printf("%d",num[i]);
printf("\n");
}
}
return 0;
}
*/
/*
//给出数据,某年某月第几个星期几,求出为哪年哪月哪日
//求得nextday,求出某年某月1号是星期几,再根据星期关系求出那一天是的日期
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ISYEAP(x) x%4==0&&x%100!=0||x%400==0?1:0
int dayofmonth[13][2]={0,0,31,31,28,29,31,31,30,30,31,31,30,30,31,31,31,31,30,30,31,31,30,30,31,31};
struct date{
int year;
int month;
int day;
void nextday(){
day++;
if(day>dayofmonth[month][ISYEAP(year)]){
month++;day=1;
if(month>12){
year++;month=1;
}
}
}
};
int buf[3001][14][32]={0};
int sx(int x){
return x<0?-x:x;
}
int main()
{
date tmp;
tmp.year=0;
tmp.month=1;
tmp.day=1;
int cnt=0;
while(tmp.year!=3001){
buf[tmp.year][tmp.month][tmp.day]=cnt;
tmp.nextday();
cnt++;
}
int a,b,c,y1,y2;
scanf("%d%d%d%d%d",&a,&b,&c,&y1,&y2);
int i=0;
for(i=y1;i<=y2;i++){
int num=buf[i][a][1]-buf[2012][7][16]+1;
int t=(num%7+7)%7;//得到该月的第一天为星期几
int d=1;//第b1个星期c1,日期为d
if(t>c)
d+=7-t+7*(b-1)+c;
else if(t<c) d+=c-t+(b-1)*7;
else d+=(b-1)*7;
printf("%4d/%02d/%02d\n",i,a,d);
}
return 0;
}*/
/*
//输入该节点及节点的父结点,求出任意两个叶子节点间的最大距离
//可以通过使用并查集,记录结点直接的距离及父结点
#include<stdio.h>
#include<stdlib.h>
int Tree[10010];
int father[20010];
int findRoot(int x)
{
if(x==-1) return x;
else {
int tmp=findRoot(Tree[x]);
Tree[x]=tmp;
return tmp;
}
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
int i=0,j=0;
for(i=1;i<m+n;i++){
scanf("%d",&father[i]);//1,2,3,4的父结点
}
}
*/
//二叉树代码