Codeforces 1077C Good Array 坑 C

时间:2024-08-04 17:36:50

Codeforces 1077C Good Array

   https://vjudge.net/problem/CodeForces-1077C

题目:

Let's call an array good if there is an element in the array that equals to the sum of all other elements. For example, the array a=[1,3,3,7]a=[1,3,3,7] is good because there is the element a4=7a4=7 which equals to the sum 1+3+31+3+3.

You are given an array aa consisting of nn integers. Your task is to print all indices jj of this array such that after removing the jj-th element from the array it will be good (let's call such indices nice).

For example, if a=[8,3,5,2]a=[8,3,5,2], the nice indices are 11 and 44:

  • if you remove a1a1, the array will look like [3,5,2][3,5,2] and it is good;
  • if you remove a4a4, the array will look like [8,3,5][8,3,5] and it is good.

You have to consider all removals independently, i. e. remove the element, check if the resulting array is good, and return the element into the array.

Input

The first line of the input contains one integer nn (2≤n≤2⋅1052≤n≤2⋅105) — the number of elements in the array aa.

The second line of the input contains nn integers a1,a2,…,ana1,a2,…,an (1≤ai≤1061≤ai≤106) — elements of the array aa.

Output

In the first line print one integer kk — the number of indices jj of the array aa such that after removing the jj-th element from the array it will be good (i.e. print the number of the nice indices).

In the second line print kk distinct integers j1,j2,…,jkj1,j2,…,jk in any order — niceindices of the array aa.

If there are no such indices in the array aa, just print 00 in the first line and leave the second line empty or do not print it at all.

Examples

Input1

    

Output1

3
4 1 5

Input2

4
8 3 5 2

Output2

2
1 4

Input3

5
2 1 2 4 3

Output3

0

Note

In the first example you can remove any element with the value 22 so the array will look like [5,1,2,2][5,1,2,2]. The sum of this array is 1010 and there is an element equals to the sum of remaining elements (5=1+2+25=1+2+2).

In the second example you can remove 88 so the array will look like [3,5,2][3,5,2]. The sum of this array is 1010 and there is an element equals to the sum of remaining elements (5=3+25=3+2). You can also remove 22 so the array will look like [8,3,5][8,3,5]. The sum of this array is 1616 and there is an element equals to the sum of remaining elements (8=3+58=3+5).

In the third example you cannot make the given array good by removing exactly one element.

分析:

首先题目意思很简单(废话不然能是C等级么),然后写的过程也没有什么困难,

附上错误代码一份~~.

 #include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int n;
bool mmm;
struct point {
long long num;
int i;
} a[];
int ans,ansans;
int b[];
bool cmp(point x,point y) {
return x.num<y.num;
}
int main() {
cin>>n;
for(int i=; i<=n; i++) {
cin>>a[i].num;
ans+=a[i].num;
a[i].i=i;
}
sort(a+,a++n,cmp);
for(int i=; i<=n; i++) {
long long now=ans-a[i].num;
if(i==n) {
if(double(now/2.0)==a[n-].num) {
ansans++;
b[ansans]=a[i].i;
}
} else if(double(now/2.0)==a[n].num) {
ansans++;
b[ansans]=a[i].i;
}
}
cout<<ansans<<endl;
for(int i=; i<=ansans; i++)
cout<<b[i]<<" ";
cout<<endl;
return ;
}

看完之后,是不是感觉自己萌萌哒完全没有错误啊

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

慎重,这是一组很大的测试样例

那么温馨的附上我的第一个hack成功的样例一份~~~

诶结果不应该是0吗!!

为什么会出来那么那么多结果!!!!!!

为什么捏

因为单个数据1e6,有2e5个数据啊(无奈)

如果数据大了的话,加起来就是2e11了,

所以特殊样例专门把int类型爆了之后让int加会正数,然后巧妙的设置了一个坑~~~

不用long long的后果~~~~~~~~~~

附上正确代码一份:

 #include <stdio.h>
#include <math.h>
#include <string.h>
#include <algorithm>
#include <iostream>
#include <string>
#include <time.h>
#include <queue>
#include <string.h>
#include <list>
#define sf scanf
#define pf printf
#define lf double
#define ll long long
#define p123 printf("123\n");
#define pn printf("\n");
#define pk printf(" ");
#define p(n) printf("%d",n);
#define pln(n) printf("%d\n",n);
#define s(n) scanf("%d",&n);
#define ss(n) scanf("%s",n);
#define ps(n) printf("%s",n);
#define sld(n) scanf("%lld",&n);
#define pld(n) printf("%lld",n);
#define slf(n) scanf("%lf",&n);
#define plf(n) printf("%lf",n);
#define sc(n) scanf("%c",&n);
#define pc(n) printf("%c",n);
#define gc getchar();
#define re(n,a) memset(n,a,sizeof(n));
#define len(a) strlen(a)
#define LL long long
#define eps 1e-6
using namespace std;
struct A {
ll num,x;
} a[];
bool cmp(A a,A b) {
if(a.x < b.x)
return true;
if(a.x== b.x && a.num < b.num)
return true;
return false;
}
int main() {
re(a,);
ll n = ;
sld(n);
ll sum = ;
for(ll i = ; i< n; i ++) {
sld(a[i].x);
a[i].num = i;
sum += a[i].x;
//pld(sum) pn
}
sort(a,a+n,cmp);
ll count0 = ;
ll b[];
for(ll i = ; i < n-; i ++) {
if(sum - a[i].x - a[n-].x == a[n-].x) {
b[count0 ++] = a[i].num+;
}
} if(sum - a[n-].x - a[n-].x == a[n-].x) {
b[count0 ++] = a[n-].num+;
} if(count0 == ) {
pld(0ll) pn
} else {
pld(count0) pn
pld(b[])
for(ll i = ; i < count0; i ++) {
pk pld(b[i])
}
}
return ;
}

咦你居然发现了这里,这里是彩蛋哦

附上被我hack的萌新代码一份:

Codeforces 1077C Good Array 坑 C

Codeforces 1077C Good Array 坑 C

 #include<bits/stdc++.h>
using namespace std; #define ll long long
#define pii pair<ll,ll>
#define bug(a) cerr << #a << " : " << a << endl;
#define FastRead ios_base::sync_with_stdio(false);cin.tie(NULL); const int MAX = 1e6; int main()
{
FastRead int n; cin >> n; int a[n+] , sum = ; multiset<int>s;
vector<int>ans; for(int i=;i<=n;i++)
cin >> a[i] , sum += a[i] , s.insert(a[i]); for(int i=;i<=n;i++)
{
s.erase(s.find(a[i])); if(*s.rbegin() == sum-a[i]-*s.rbegin())
ans.push_back(i); s.insert(a[i]);
} cout << ans.size() << endl;
for(auto i : ans)
cout << i << " ";
cout << endl; }