社区讨论
啊?求hack
CF1854A2 Dual (Hard Version)参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lo1zdkxm
- 此快照首次捕获于
- 2023/10/23 05:28 2 年前
- 此快照最后确认于
- 2023/11/03 05:53 2 年前
不明白怎么没的,有没有大佬出组数据
CPP#include <bits/stdc++.h>
using namespace std;
int n,a[10000],t,maxa,mina,maxnum,minnum,zheng,fu,zero;
int main()
{
scanf("%d",&t);
while(t--){
maxa=-1e9,mina=1e9;
zheng=fu=zero=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
if(a[i]>maxa) maxa=a[i],maxnum=i;
if(a[i]<mina) mina=a[i],minnum=i;
if(a[i]>0) zheng++;
else if(a[i]<=0 ) fu++;
else zero++;
}
if(maxa==mina) {
cout<<"0"<<endl;
continue;
}
if(abs(zheng-fu)<=5)
{
if(abs(mina)>abs(maxa))
{
cout<<zheng+n-1<<endl;
for(int i=1;i<=n;i++)
if(a[i]>0)
cout<<i<<" "<<minnum<<endl;
for(int i=n-1;i>=1;i--)
cout<<i<<" "<<i+1<<endl;
}
else {
cout<<fu+n-1<<endl;
for(int i=1;i<=n;i++)
if(a[i]<0)
cout<<i<<" "<<maxnum<<endl;
for(int i=2;i<=n;i++)
cout<<i<<" "<<i-1<<endl;
}
}
else{
int maxshu=max(zheng,fu);
if(zheng>fu) {
cout<<n-1+5+fu;
for(int i=1;i<=5;i++) cout<<maxnum<<" "<<maxnum<<endl;
for(int i=1;i<=n;i++) if(a[i]<0) cout<<i<<" "<<maxnum<<endl;
for(int i=2;i<=n;i++) cout<<i<<" "<<i-1<<endl;
}
if(zheng<fu) {
cout<<n-1+5+zheng;
for(int i=1;i<=5;i++) cout<<minnum<<" "<<minnum<<endl;
for(int i=1;i<=n;i++) if(a[i]>0) cout<<i<<" "<<minnum<<endl;
for(int i=n-1;i>=1;i--) cout<<i<<" "<<i+1<<endl;
}
}
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...