Cod sursa(job #464047)

Utilizator APOCALYPTODragos APOCALYPTO Data 18 iunie 2010 15:38:06
Problema Zeap Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
using namespace std;
#include<iostream>
#include<fstream>
#include<cstring>
int a[50005],dp[50005][4],N,K=3;
ofstream fout("secvente.out");
void solve()
{int i,j,last,sol=0;;
    for(i=1;i<=N;i++)
        dp[i][ a[i] % K] = 1;
    for(i=2;i<=N;i++)
       for(j=0;j<=2;j++)
       { dp[i][j] = max ( dp[i][j] , dp[i-1][j]);
         last = ((j - a[i] ) % K + K) % K;
         if (dp[ i - 1][last])
             dp[i][j] = max (dp[i][j], dp[i - 1][last] + 1);


       }
       for(i=1;i<=N;i++)
        sol=max(sol,dp[i][0]);
    fout<<sol<<"\n";

}
void cit()
{int i,j;
    ifstream fin("secvente.in");
    for(i=1;i<=3;i++)
    {fin>>N;
    memset(a,sizeof(a),0);
    memset(dp,sizeof(dp),0);
    for(j=1;j<=N;j++)
      fin>>a[j];
    solve();
    }
    fin.close();


}
int main()
{

    cit();
    fout.close();
    return 0;
}