Afişează mesaje
Pagini: 1 [2]
26  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1161 Mxl : Iunie 30, 2011, 11:13:48
are cineva idee ce are testul 1? iau 90 de puncte  Brick wall dar iau toate testele de la ONI
27  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1031 Cmmmc : Iunie 28, 2011, 14:53:36
multumesc pentru sfat  Dancing
sti ce problema putea avea afisarea? ca la mine dadea bine si se vedea si prima linie
28  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1031 Cmmmc : Iunie 28, 2011, 14:28:58
se poate uita cineva pe sirsa mea?  nu reusesc sa vad ce e gresit  Brick wall
am luat testele de la olimpiada si par sa mearga. nu vad vreo diferenta dar totusi iau 40 pe infoarena.

Cod:

#include<iostream>
#include<fstream>
#define N 500000
using namespace std;

ifstream in("cmmmc.in");
ofstream out("cmmmc.out");

int solmin=100000,sol1,sol2,nrp[144000],nr,fact[400],pu[400],n,sol[400];
bool z[N];

void erat() {
int i,j;

for(i=2;i*i<N;++i) {
if(!z[i]) {
nrp[++nr]=i;
for(j=2*i;j<N;j+=i)
z[j]=true;
}
}

for(;i<N;++i)
if(!z[i])
nrp[++nr]=i;
}

void ver() {

int i,nu1=1,nu2=1;

for(i=1;i<=n;++i) {
if(sol[i]==0)
nu1*=fact[i];
else
nu2*=fact[i];
}

if(nu1+nu2<solmin) {
solmin=nu1+nu2;
sol1=nu1; sol2=nu2;
if(sol1>sol2)
swap(sol1,sol2);
}
}

void back(int q) {

int i;

if(q==n+1) {
ver();
return;
}

for(i=0;i!=2;++i) {
sol[q]=i;
back(q+1);
}
}

int cmmmc(int p) {

int i,nrr=1;

n=0; solmin=100000;

for(i=1;i<=nr;++i) {
if(p%nrp[i]==0) {
fact[++n]=1;
pu[n]=0;
while(p%nrp[i]==0) {
p/=nrp[i];
++pu[n]; fact[n]*=nrp[i];
}
nrr*=(2*pu[n]+1);
}
}

if(p!=1) {
fact[++n]=p;
pu[n]=1;
nrr*=3;
}

nrr=(nrr+1)>>1;

back(1);

return nrr;

}

int main() {

int i,ni,k;

erat();

in >> k;

for(i=1;i<=k;++i) {
in >> ni;

out << cmmmc(ni) << " " << sol1 << " " << sol2 << "\n";
}

return 0;
}
29  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 399 Sum2 : Iunie 23, 2011, 09:15:22
@PlayLikeNeverB4. ai luat acum 100 cu sursa mea modificata?

am corectat niste greseli si acum iau testele tale, da tot 50 iau  Brick wall .
la al treilea trebuie sa dea 200, nu?
30  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 399 Sum2 : Iunie 22, 2011, 15:23:02
stie cineva unde gresesc? am folosit deque cu sume partiale dar iau doar 50  Brick wall

Cod:
#include<iostream>
#include<fstream>
#define N 100004

using namespace std;

ifstream in("sum2.in");
ofstream out("sum2.out");

int n,l,U,smax=-1000000,d[N],p=1,u,y[N];
short x[N];

inline void swap(int &a, int & b) {
int t=a;
a=b;
b=t;
}

inline void add(const int &a) {
d[++u]=a;
}

inline void stanga(int i) {
if(p<=u && i - d[p]>= U)
++p;
}

inline void dreapta() {
while(u!=p && y[d[u]] <= y[d[u-1]]) {
swap(d[u],d[u-1]);
--u;
}
}

void so() {
int i;

for(i=0;i<U-l-1;++i) {
add(i);
dreapta();
}

for(i=U;i<=n;++i) {
stanga(i);
add(i-l-1);
dreapta();
if(y[i]-y[d[p]]>smax)
smax=y[i]-y[d[p]];
}
add(i-l-1);
dreapta();
if(y[i-1]-y[d[p]]>smax)
smax=y[i-1]-y[d[p]];
}

int main() {
int i;
in >> n >> l >> U;

for(i=1;i<=n;++i) {
in >> x[i];
y[i]=x[i] + y[i-1];
}

so();

out << smax;

return 0;
}
31  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 110 Granita : Iunie 21, 2011, 15:06:28
cred ca trebuia sa fie  Aj<=Ai si Bi<=Bj  nu  Aj<Ai si Bi<Bj
32  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1162 Segmente : Iunie 17, 2011, 15:18:56
este vreo problema pe linux daca afisez cu "%D"?
ca am trimis sursa cu "%D" si am luat 0
si dupa am pus "%d" si am luat 100
33  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 889 Mins : Mai 25, 2011, 16:10:58
nu trebuia sa fie c si d maxim 5000? Angry
la lot asa era
34  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 953 Studenti : Mai 22, 2011, 16:05:31
se poate uita cineva pe sursa mea?
Cod:

#include<stdio.h>

short n,h[301],g[301],hmax,gmax,nr1,nr2,g1max,h1max,gmin,hmin;
int smin=2000000000,s;

int main() {
int i,j,k;
freopen("studenti.in","r",stdin);
freopen("studenti.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;++i) {
scanf("%d%d",&h[i],&g[i]);
if(h[i]>hmax) {
nr1=i;
hmax=h[i];
}
if(g[i]>gmax) {
nr2=i;
gmax=g[i];
}
}
for(i=1;i<n;++i)
for(j=i+1;j<=n;++j) if(i!=nr1 && i!=nr2) {
s=(hmax+h[i]+h[j])*(gmax+g[i]+g[j]);
if(s<smin)
smin=s;
}
for(i=1;i<=n;++i) if(i!=nr1 && i!=nr2) {
for(j=1;j<=n;++j) if(j!=nr2 && j!=i && j!=nr1) {
gmin=20000; hmin=20000; g1max=0; h1max=0;
for(k=1;k<=n;++k) if(k!=nr1 && k!=nr2 && k!=i && k!=j) {
if((h[k]>h[i] && h[k]>h[nr2]) && (g[k]>g[j] && g[k]>g[nr1])) {
if(h[k]>h1max)
h1max=h[k];
if(g[k]>g1max)
g1max=g[k];
}
if(h[k]<hmin)
hmin=h[k];
if(g[k]<=gmin)
gmin=g[k];
}
if(g1max!=0) {
s=(hmax+h[i]+h1max)*(gmax+g[j]+g1max);
if(s<smin)
smin=s;
}
else {
for(k=1;k<=n;++k) if(k!=nr1 && k!=nr2 && k!=i && k!=j) {
s=(hmax+h[i]+h[k])*(gmax+g[j]+g[k]);
if(s<smin)
smin=s;
}
}
}
}
printf("%d\n",smin);
return 0;
}
35  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1154 Avioane : Mai 22, 2011, 15:08:36
poate sa imi explice cineva solutia la aceasta problema?
36  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1087 Doi : Mai 22, 2011, 08:57:37
nu inteleg ce gresesc Brick wall
poate sa se uite cineva pe sursa mea, va roog

Cod:

#include<stdio.h>
#include<string.h>

int t,nrr[505],nr[505],a1,nu,a2,nr2[505];
char a[510];

void imp(int v[]) {
int i,t=0;
for(i=v[0];i>0;--i) {
t=t*10+v[i];
v[i]=t/2; t%=2;
}
for(;v[v[0]]==0;--v[0]);
}
int smax(int a1,int a2) {
if(a1>a2) return a1;
return a2;
}
void add(int a) {
int i,t=0; nrr[1]+=a;
for(i=1;t || i<=nrr[0];++i,t/=10) {
t+=nrr[i];
nrr[i]=t%10;
}
nrr[0]=smax(i-1,nrr[0]);
}
void add2(int a) {
int i; nr2[1]-=a;
for(i=1;i<=nr2[0];++i) {
if(nr2[i]<0) {
nr2[i]+=10;
nr2[i+1]--;
}
}
for(;!nr2[nr2[0]] && nr2[0]!=0;--nr2[0]);
}

bool cmp() {
int j;
if(nrr[0]!=nr2[0]) return 0;
for(j=nrr[0];j>0;--j)
if(nrr[j]!=nr2[j]) return 0;
return 1;
}

int main() {
int i,w;
freopen("doi.in","r",stdin);
freopen("doi.out","w",stdout);
scanf("%d",&t);
for(w=1;w<=t;++w) {
scanf("%s",&a); a1=strlen(a);
nu=0; nr[0]=0;
for(i=a1-1;i>=0;--i)
nr[++nr[0]]=a[i]-'0';
while(nr[0]!=0) {
++nu;
if((nr[1]&1)==0)
imp(nr);
else {
a1=0;
for(i=0;i<=nr[0];++i)
nrr[i]=nr[i];
add(1);
while((nrr[1]&1)==0) {
++a1;
imp(nrr);
}
a2=0;
for(i=0;i<=nr[0];++i)
nr2[i]=nr[i];
add2(1);
if(!nr2[0])
break;
while((nr2[1]&1)==0) {
++a2;
imp(nr2);
}
if(a2>a1) {
if(cmp())
nu+=a1;
else
nu+=a2;
for(i=0;i<=nr2[0];++i)
nr[i]=nr2[i];
}
else {
if(cmp())
nu+=a2;
else
nu+=a1;
for(i=0;i<=nrr[0];++i)
nr[i]=nrr[i];
}
}
}
printf("%d\n",nu);
}
return 0;
}
37  infoarena - concursuri, probleme, evaluator, articole / RMMS 2011 / Răspuns: Lazy : Februarie 25, 2011, 11:04:31
gandestete si tu, long long e pana la 10^17 deci e clar ca nu intra
38  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Răspuns: 018 Cautare binara : Ianuarie 22, 2011, 11:56:17
ce are serverul? Angry
la toti apare in asteptare
39  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 014 Secventa : Decembrie 14, 2010, 18:38:28
af facut o sursa cu deque  COD:

Cod:
#include<iostream>
#include<fstream>
using namespace std;
const int N=500001;
int a,s,smax,dr,st=1,d[N],v[N],n,k;
void stanga (int i) {
while ((i-d[st]>=k) && (v[d[st]]<v[d[st+1]])) {
++st;
}
}

void dreapta (int i) {
while (st<=dr && v[d[dr]]>=v[i]) {
--dr;
}
}

void adauga (int i) {
d[++dr]=i;
}

ifstream aa("secventa.in");
ofstream ss("secventa.out");
int main () {
smax=-10000;
int i;
aa >> n >> k;
for (i=1;i<=n;++i) {
aa >> v[i ];
stanga(i);
dreapta(i);
adauga(i);
if (i>=k && v[d[st]]>smax) {
smax=v[d[st]];
a=i-k+1;
s=i;
}
}
ss << a << " " << s << " " << smax;
return 0;
}

si iau 10 pct. nu inteleg unde am gresit.
ma poate ajuta cineva?

Editat de moderator: foloseste tagurile [ code ] si [ /code ] cand postezi cod. Lasa spatiu intre parantezele drepte si litera i, ca altfel textul ce urmeaza va fi italic.
40  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 397 Peri : Noiembrie 11, 2010, 17:23:28
cum sa fie (2,2) si (4,4)? Angry  suma lor e 3 Think
tot nu vad Brick wall

LE: aaaa   Aha   nu citisem de pe colturi
Modificat de moderator: Nu posta consecutiv! Foloseste butonul Modifica!


41  infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 397 Peri : Noiembrie 10, 2010, 18:05:05
exemplul nu e gresit? nu vad al doilea dreptunghi cu suma maxima
Pagini: 1 [2]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines