Cod sursa(job #897254)

Utilizator adascaluAlexandru Dascalu adascalu Data 27 februarie 2013 19:40:09
Problema Sum Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
using namespace std;
#include<fstream>
#include<vector>
#include<algorithm>
#define dmax 100010
ofstream g("sum.out");
bool ciur[2*dmax];
int v[dmax],max_nr;
vector<pair<long long,int> > sum;
void create_ciur(int dim);
void rezolva(int x);
int main ()
{
    int n,i;
    ifstream f("sum.in");
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>v[i];
        if(v[i]>max_nr)
            max_nr=v[i];
    }
    create_ciur(2*max_nr);
    for(i=1;i<=n;i++)
        rezolva(v[i]);
    f.close();
    g.close();
    return 0;
}
void create_ciur(int dim)
{
    int i,j;
    for(i=2;i<=dim;i++)
        if(!v[i])
        {
            int ls=dim/i;
            for(j=2;j<=ls;j++)
                ciur[j*i]=true;
        }
}
void rezolva(int x)
{
    int i,j,n;
    long long s=0;
    n=sum.size();
    for(i=n-1;i>=0&&!s;i--)
        if(sum[i].second<=x)
            s=sum[i].first;
    for(j=i+1;j<=2*x;j++)
        if(!ciur[j])
            s+=(long long)j;
    g<<s<<"\n";
    sum.push_back(make_pair(s,x));
    sort(sum.begin(),sum.end());
}