Cod sursa(job #1072663)

Utilizator cristibogdanPatrascu Cristian cristibogdan Data 4 ianuarie 2014 18:54:40
Problema Subsecventa de suma maxima Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.8 kb
#include <fstream>
#include <cmath>

using namespace std;
ifstream f("popularitate.in");
ofstream g("popularitate.out");
int k,m,d,i,z,q,nr,Max,Min,r,j,a[4000],v[4000],x,t,k1,ok,l,b[4000];
int main()
{f>>k;
f>>m;
k1=k;
l=0;
for(d=2;d<=sqrt(k1);d++){
    nr=0;
    if(k%d==0){
        l++;
        b[l]=d;
        while(k%d==0){
                k=k/d;
                nr++;}
        a[l]=nr;}}
if(k!=1){
    b[l+1]=k;
        a[l+1]=1;
    for(i=1;i<=m;i++){
    Min=9999999;
    f>>x;
        for(j=1;j<=x;j++){
                f>>r;
                for(d=1;d<=l+1;d++){
                    nr=0;

                        if(r%b[d]==0){
                            while(r%b[d]==0){
                                r=r/b[d];
                                nr++;}
                            v[d]=v[d]+nr;}}
        }
            for(q=1;q<=l+1;q++){

                    if(Min>v[q]/a[q])
                        Min=v[q]/a[q];
                        v[q]=0;}
                if(Max<Min){
                    Max=Min;
                    t=i;}}}
    else{



for(i=1;i<=m;i++){
    Min=9999999;
    f>>x;
        for(j=1;j<=x;j++){
                f>>r;
                for(d=1;d<=l;d++){
                    nr=0;

                        if(r%b[d]==0){
                            while(r%b[d]==0){
                                r=r/b[d];
                                nr++;}
                            v[d]=v[d]+nr;}}
        }
            for(q=1;q<=l;q++){

                    if(Min>v[q]/a[q])
                        Min=v[q]/a[q];
                        v[q]=0;}
                if(Max<Min){
                    Max=Min;
                    t=i;}}}
if(Max==0&&t==0)
    g<<0<<" "<<1;
        else
             g<<Max<<" "<<t;

    return 0;
}