1. 程式人生 > >codeforces1077C Good Array(Codeforces Round #521 (Div. 3))

codeforces1077C Good Array(Codeforces Round #521 (Div. 3))

傳送門:http://codeforces.com/contest/1077/problem/C

吐槽:忘記特判2的情況被hack了,肥宅大哭.jpg

程式碼:

#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<string>
#include<iostream>
#include<map>
#include<vector>
#include<set>
#include<queue>
using namespace std;
typedef long long ll;
const ll maxv=2e5+5;

struct node
{
	ll a,id;
}q[maxv];

bool cmp(node a,node b)
{
	return a.a>b.a;
}

vector<ll>ans;
int main()
{
	ll n;
	scanf("%lld",&n);
	ll sum=0;
	for(ll i=0;i<n;i++)
	{
		scanf("%lld",&q[i].a);
		sum+=q[i].a;
		q[i].id=i;
	}
	if(n==2)
	{
		printf("0\n");
		return 0;
	}
	ll flag=0;
	sort(q,q+n,cmp);
	ll maxx=q[0].a;
	ll maxx2=q[1].a;
	sum-=maxx;
	for(ll i=1;i<n;i++)
	{
		if(sum-q[i].a==maxx)
		{
			ans.push_back(q[i].id);
			flag=1;
		}
	}
	if(sum-maxx2==maxx2)
	{
		flag=1;
		ans.push_back(q[0].id);
	}
	printf("%d\n",ans.size());
	for(ll i=0;i<ans.size();i++)
	{
		printf("%lld",ans[i]+1);
		if(i!=ans.size()-1)
		{
			printf(" ");
		}
	}
	puts("");
	return 0;
}