Pagini recente » Cod sursa (job #361761) | Cod sursa (job #865877) | Cod sursa (job #306953) | Cod sursa (job #3175315) | Cod sursa (job #897254)
Cod sursa(job #897254)
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());
}