Afişează mesaje
|
Pagini: [1]
|
5
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 1011 Egipt
|
: Martie 11, 2016, 14:37:43
|
Isi da seama cineva ce e gresit la sursa:
#include <cstdio> int mutari=0,n,i,a[100005],n1=0,n2=0,n3=0,i1,i2,i3,aux; struct schimbare { int i,j; }; schimbare mut[100005]; int main() { freopen("egipt.in","r",stdin); freopen("egipt.out","w",stdout); scanf("%d",&n); for (i=1; i<=n; i++) { scanf("%d",&a); if (a==1) n1++; else if (a==2) n2++; else n3++; } for (i1=1; i1<=n1; i1++) for (i2=n1+1; i2<=n1+n2; i2++) if (a[i1]!=1 && a[i2]==1) { mutari++; mut[mutari].i=i1; mut[mutari].j=i2; aux=a[i1]; a[i1]=1; a[i2]=aux; } for (i1=1; i1<=n1; i1++) for (i3=n1+n2+1; i3<=n1+n2+n3; i3++) if (a[i1]!=1 && a[i3]==1) { mutari++; mut[mutari].i=i1; mut[mutari].j=i3; aux=a[i1]; a[i1]=1; a[i3]=aux; } for (i2=n1+1; i2<=n1+n2; i2++) for (i3=n1+n2+1; i3<=n1+n2+n3; i3++) if (a[i2]!=2 && a[i3]==2) { mutari++; mut[mutari].i=i2; mut[mutari].j=i3; aux=a[i2]; a[i2]=2; a[i3]=aux; } printf("%d\n",mutari); for (i=1; i<=mutari; i++) printf("%d %d\n",mut.i,mut.j); return 0; }
|
|
|
6
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva de probleme / Răspuns: 114 Muzeu
|
: Martie 07, 2016, 15:00:45
|
Solutia de 100p folosind algoritmul lui Lee: #include <cstdio> int i,j,n,sc,a[255][255]; int dx[]={0, 1, 0, -1}; int dy[]={1, 0, -1, 0}; struct coada { int l,c; }; coada c[66000]; void citire() { int i,j; char s[255]; freopen("muzeu.in","r",stdin); freopen("muzeu.out","w",stdout); scanf("%d",&n); sc=0; for (i=1; i<=n; i++) { scanf("%s",&s); for (j=0; j<=n-1; j++) if (s[j]=='#') a [j+1]=-1; else if (s[j]=='P') { a[j+1]=1; sc++; c[sc].l=i; c[sc].c=j+1; } } }
void bordare() { int i; for (i=0; i<=n+1; i++) { a a[n+1]=-1; a[0]=-1; a[n+1]=-1; } }
void Lee() { int i,ic=1; coada t,cx; while (ic<=sc) { t=c[ic]; ic++; for (i=0; i<=3; i++) { cx.l=t.l+dx; cx.c=t.c+dy; if (a[cx.l][cx.c]==0) { sc++; c[sc].l=cx.l; c[sc].c=cx.c; a[cx.l][cx.c]=a[t.l][t.c]+1; } } } }
void afisare() { int i,j; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) printf("%d ",a[j]-1); printf("\n"); } }
int main() { citire(); bordare(); Lee(); afisare(); return 0; }
|
|
|
7
|
infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 003 Bursa
|
: Martie 03, 2016, 12:53:01
|
Isi da cineva seama ce e gresit la:
#include <cstdio>
using namespace std; int n,i,v[500005]; long long s,sinit,actiuni;
int main() { freopen("bursa.in","r",stdin); freopen("bursa.out","w",stdout); scanf("%d%lld",&n,&s); for (i=1; i<=n; i++) scanf("%d",&v); sinit=s; v[0]=2000000000; v[n+1]=-2000000000; for (i=1; i<=n; i++) if (v[i-1]<v && v>v[i+1]) { s=s+actiuni*v; actiuni=0; } else if (v[i-1]>v && v<v[i+1]) { actiuni=actiuni+s/v; s=s%v; } printf("%lld\n",s-sinit); return 0; }
|
|
|
|