40pts,4,5,7,8,9WA,10RE
  • 板块P1142 轰炸
  • 楼主__K2FeO4
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/1/30 00:12
  • 上次更新2023/10/28 10:05:15
查看原帖
40pts,4,5,7,8,9WA,10RE
565450
__K2FeO4楼主2022/1/30 00:12

40pts code

#include<bits/stdc++.h>
using namespace std;
struct frac{
	int p,q;
};
struct func{
	frac k,b;
}c[500000]={0};
int a[720][2]={0};
bool cmp(func x,func y){
	if(x.k.q==0)return true;
	if(y.k.q==0)return false;
	if(x.k.p==0)return false;
	if(y.k.p==0)return true;
	if(x.k.p!=y.k.p||x.k.q!=y.k.q)
	return x.k.p*y.k.q>x.k.q*y.k.p;
	return x.b.p*y.b.q>x.b.q*y.b.p;
}
int gcd(int m,int n){
	if(n==0)return m;
	return gcd(n,m%n);
}
frac reduce(int m,int n){
	frac f;
	if(m==0){//zero
		f.p=0;
		f.q=1;
		return f;
	}
	if(n==0){//inf
		f.p=1;
		f.q=0;
		return f;
	}
	int sign=m*n/abs(m*n);
	int d=gcd(abs(m),abs(n));
	f.p=abs(m)/d*sign;
	f.q=abs(n)/d;
	return f;
}
int main(){
	int n,i,j,y1,y2,x1,x2,l=0,k=1,maxk=1;
	cin>>n;
	for(i=0;i<n;i++)
	scanf("%d%d",&a[i][0],&a[i][1]);
	for(i=0;i<n;i++)
	for(j=i+1;j<n;j++){
		x1=a[i][0];
		y1=a[i][1];
		x2=a[j][0];
		y2=a[j][1];
		c[l].k=reduce(y1-y2,x1-x2);
		c[l++].b=reduce(y1*(x1-x2)-x1*(y1-y2),x1-x2);
	}
	sort(c,c+l,cmp);
	for(i=1;i<l;i++){
		func x=c[i-1];
		func y=c[i];
		if(x.k.p!=y.k.p||x.k.q!=y.k.q||
		x.b.p!=y.b.p||x.b.q!=y.b.q)k=1;
		else k++;
		maxk=max(maxk,k);
	}
	k=1;
	while(maxk>0){
		maxk-=k;
		k++;
	}
	cout<<k<<endl;
	return 0;
} 

So what should I do next?

2022/1/30 00:12
加载中...