/ SeriousOJ /

Record Detail

Wrong Answer


  
# Status Time Cost Memory Cost
#1 Accepted 1ms 540.0 KiB
#2 Wrong Answer 12ms 564.0 KiB
#3 Wrong Answer 12ms 576.0 KiB

Code

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#define run  ios_base::sync_with_stdio(false);cin.tie(0);

#define ln length()
#define ll long long
#define pll pair<ll, ll>
#define ull unsigned ll
#define ld double
#define endl "\n"
#define pb push_back
#define fi first
#define se second
 
#define pi acos(-1)
#define N 1000006
#define INF 10000000000
#define minimum -9223372036854775807
#define maximum -minimum
#define mod 1000000007
 
using namespace std;
using namespace __gnu_pbds;
template <class t>
using ordered_set=tree<t, null_type,less_equal<t>, rb_tree_tag,tree_order_statistics_node_update>;

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());

ll gcd(ll a, ll b)
{
	if(b==0)
		return a;
	return gcd(b, a%b);
}

ll lcm(ll a, ll b)
{
	return a/gcd(a, b)*b;
}

bool isprime(ll n)
{
	if(n==1)
		return 0;
	for(ll i=2; i*i<=n; i++)
	{
		if(n%i==0)
			return 0;
	}
	return 1;
}

ll binpow(ll a, ll b)
{
    a%=mod;
    ll res=1;
    while(b>0)
	{
        if(b%2==1)
            res=(res*a)%mod;
        a=(a*a)%mod;
        b/=2;
    }
    return res;
}

int main()
{
	run;
	ll t;
	cin>>t;
	while(t--)
	{
		ll n;
		cin>>n;
		ll a[n], me=0, ms=0, sf=0;
		for(ll i=0; i<n; i++)
		{
			cin>>a[i];
			if(a[i]==-1)
				me++;
			else if(a[i]==1)
				ms++;
			else
				sf++;
		}
		ll cvb=0;
		if(me==1)
		{
			if(sf==0)
			{
				cvb=(ms-2)/3-1;
			}
			else if(sf==1)
			{
				cvb=(ms-1)/3;
			}
			else
			{
				cvb=ms/3;
			}
			cout<<cvb<<endl;
			continue;
		}
		if(me==0)
		{
			if(sf%3==0)
				cvb=ms/3;
			else if(sf%3==1)
				cvb=(ms-1)/3;
			else
				cvb=(ms-2)/3;
			cout<<cvb<<endl;
			continue;
		}
		if(me>=2)
		{
			while(me>=2)
			{
				if(ms>=1)
				{
					cvb++;
					me-=2;
					ms-=1;
				}
				else if(sf>=1)
				{
					me-=2;
					sf--;
				}
				else
				{
					me-=3;
					cvb--;
				}
			}
			if(me==1)
			{
				if(sf==0)
				{
					cvb--;
				}
			}
		}
			if(sf%3==0)
				cvb+=ms/3;
			else if(sf%3==1)
				cvb+=(ms-1)/3;
			else
				cvb+=(ms-2)/3;
			cout<<cvb<<endl;
			continue;
	}
}
// By Xanlar

Information

Submit By
Type
Submission
Problem
P1152 Special Array
Contest
Happy New Year 2025
Language
C++17 (G++ 13.2.0)
Submit At
2025-01-02 15:04:36
Judged At
2025-01-02 15:04:36
Judged By
Score
1
Total Time
12ms
Peak Memory
576.0 KiB