其他分享
首页 > 其他分享> > 【CF】Codeforces Round 698(Div1)_1477C_几何/构造

【CF】Codeforces Round 698(Div1)_1477C_几何/构造

作者:互联网

链接

CF1477C

题解

现场得分:过了

我现场的做法

另外的做法

代码

#include<bits/stdc++.h>
#define LL long long
#define MAXN 5010
using namespace std;
template<typename T> void Read(T &cn)
{
	char c; int sig = 1;
	while(!isdigit(c = getchar())) if(c == '-') sig = 0;
	if(sig) {cn = c-48; while(isdigit(c = getchar())) cn = cn*10+c-48; }
	else    {cn = 48-c; while(isdigit(c = getchar())) cn = cn*10+48-c; }
}
template<typename T> void Write(T cn)
{
	int wei = 0; T cm = 0; int cx = cn%10; cn/=10;
	if(cn < 0 || cx < 0) {putchar('-'); cn = 0-cn; cx = 0-cx; }
	while(cn)cm = cm*10+cn%10,cn/=10,wei++;
	while(wei--)putchar(cm%10+48),cm/=10;
	putchar(cx+48);
}
template<typename T> void WriteL(T cn) {Write(cn); puts(""); }
template<typename T> void WriteS(T cn) {Write(cn); putchar(' '); }
template<typename T> void Max(T &cn, T cm) {cn = cn < cm ? cm : cn; }
template<typename T> void Min(T &cn, T cm) {cn = cn < cm ? cn : cm; }
struct qwe{
	LL x,y;
	void getit() {Read(x); Read(y); }
	inline friend qwe operator -(qwe cn, qwe cm) {qwe guo; guo.x = cn.x-cm.x; guo.y = cn.y-cm.y; return guo; }
};
LL dianji(qwe cn, qwe cm) {return cn.x*cm.x + cn.y*cm.y; }
qwe a[MAXN+1];
int n;
int xu[MAXN+1];
int main()
{
//	freopen(".in","r",stdin);
//	freopen(".out","w",stdout);
	Read(n);
	for(int i = 1;i<=n;i++) a[i].getit(), xu[i] = i;
	int cnt = 0;
	for(int i = 3;i<=n;)
	{
		cnt++;
		if(dianji(a[xu[i]]-a[xu[i-1]], a[xu[i-2]]-a[xu[i-1]]) <= 0) {
			swap(xu[i-2], xu[i-1]); 
			i--; Max(i,3);
		}
		else i++;
		if(cnt >= 100000000) {puts("-1"); return 0; }
//		printf("i = %d cnt = %d %lld\n",i,cnt);
//		for(int j = 1;j<=n;j++) printf("xu[%d] = %d ",j,xu[j]); puts("");
	}
	for(int i = 1;i<=n;i++) WriteS(xu[i]); puts("");
	return 0;
}

标签:10,cn,cm,int,698,CF,Codeforces,void,qwe
来源: https://www.cnblogs.com/czyarl/p/14347295.html