codeforces 976D Degree Set (Only Code,not System Test yet)

Revision en2, by LittleFall, 2018-05-01 14:45:44

link

my Chinese blog https://blog.csdn.net/yzyyylx/article/details/80157247

code

/* LittleFall : Hello! */
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
inline int read();
inline void write(int x);
const int M = 1024;
int save[M];

int main(void)
{
	int n=read(),ans=0;
	for(int i=1;i<=n;i++)
		save[i]=read();
	int vecs=save[n]+1;

	int r=n,l=1,ready=0;
	for(int vec=1;vec<vecs;vec++)
	{
		if(save[l]<=ready)
			l++,r--;	
		else if(ready+vecs-vec==save[r])
			ready++,ans+=vecs-vec;
	}
	printf("%d\n",ans );

	r=n,l=1,ready=0;
	for(int vec=1;vec<vecs;vec++)
	{
		if(save[l]<=ready)
			l++,r--;
		else if(ready+vecs-vec==save[r])
		{
			for(int j=vec+1;j<=vecs;j++)
				printf("%d %d\n",vec,j );
			ready++;
			ans+=vecs-vec;
		}
	}

	return 0;
}


inline int read()
{
	int x=0,f=1;char ch=getchar();
	while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
	return x*f;
}
inline void write(int x)
{
     if(x<0) putchar('-'),x=-x;
     if(x>9) write(x/10);
     putchar(x%10+'0');
}

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
en3 English LittleFall 2019-07-05 09:54:00 26
en2 English LittleFall 2018-05-01 14:45:44 810
en1 English LittleFall 2018-04-30 20:56:58 1827 Initial revision (published)