Pagini recente » Cod sursa (job #1425665) | Cod sursa (job #2750244) | Cod sursa (job #2657626) | Cod sursa (job #2954805) | Cod sursa (job #52977)
Cod sursa(job #52977)
#include <stdio.h>
#include <memory.h>
#define NMAX 50010
long n;
long a[NMAX];
//int sol[NMAX];
long long solsuma[NMAX];
long sol1[NMAX];
long sol2[NMAX];
long solve()
{
long i, nr = 0;
long max = -1;
for(i = 1; i <= n; ++i)
{
scanf("%ld\n", &a[i]);
solsuma[i] = a[i] + solsuma[i-1];
sol1[i] = sol1[i-1];
sol2[i] = sol2[i-1];
if(a[i] % 3 == 1)
++sol1[i];
else if(a[i] % 3 == 2)
++sol2[i];
else
++nr;
if(solsuma[i] % 3 == 0)
max = i;
else if(solsuma[i] % 3 == 1 && sol1[i] > 0)
{
max = i-1;
}
else if(solsuma[i] % 3 == 2)
{
if(sol2[i] > 0)
max = i-1;
else if(sol1[i] > 1 && i-2 > max)
max = i-2;
}
}
if(nr > max)
max = nr;
return max;
}
int main()
{
long i;
freopen("secvente.in", "r", stdin);
freopen("secvente.out", "w", stdout);
for(i = 0; i < 3; ++i)
{
scanf("%ld\n", &n);
printf("%ld\n", solve());
//memset(sol, 0, sizeof(sol));
memset(a, 0, sizeof(a));
memset(sol1, 0, sizeof(sol1));
memset(sol2, 0, sizeof(sol2));
memset(solsuma, 0, sizeof(solsuma));
}
fclose(stdin);
fclose(stdout);
return 0;
}