Afişează mesaje
Pagini: [1]
1  infoarena - concursuri, probleme, evaluator, articole / Arhiva educationala / Problema noob :) : Februarie 14, 2014, 17:42:56
#include <stdio.h>

int main(){
  while (getchar()!=EOF);
}

De ce iese din program doar cand intalneste EOF ca fiind primul caracter pe linie, si daca scriu de la tastatura a+ctrlZ nu iese ?
2  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 06, 2013, 16:52:43
La indici era problema, am rezolvat, multumesc frumos !
3  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 06, 2013, 16:41:23
Cod:
#include <stdio.h>
 
#define INPUT "diagonale.in"
#define OUTPUT "diagonale.out"
 
 
int main(){
    int n,i,j;
    long long x;
    long long dp[2000], ds[2000];
    long long maxp,maxs;
 
    freopen(INPUT,"r",stdin);
    freopen(OUTPUT,"w",stdout);
    
    scanf("%d",&n);
 
    for (i=1; i<=2*n-1; i++){
        dp[i]=0;
        ds[i]=0;
    }
 
    for (i=1; i<=n; i++)
        for (j=1; j<=n; j++){
            scanf("%lld",&x);
            dp[n+i-j]=dp[n+i-j]+x;
            ds[i+j]=ds[i+j]+x;
        }
 
        maxp=-1000000000;
        maxs=-1000000000;
 
    for (i=1; i<=2*n-1; i++){
        if (dp[i]>maxp)
            maxp=dp[i];
        if (ds[i]>maxs)
            maxs=ds[i];
    }
 
    if (maxp>maxs)
        printf("%lld",maxp);
    else
        printf("%lld",maxs);
 
}

am incercat si cu indicii si tot nu ia ultimu test  sad
4  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 06, 2013, 16:14:48
imi cer scuze sunt nou pe site, dar nu vad care este problema cu indicii ca ii notez eu 0 n-1 ca ii notez 1 n pana la urma suma de pe diagonale tot aia e nu ?
5  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 06, 2013, 14:55:24
#include <stdio.h>

#define INPUT "diagonale.in"
#define OUTPUT "diagonale.out"


int main(){
   int n,i,j;
   long long x;
   long long dp[2000], ds[2000];
   long long maxp,maxs;

   freopen(INPUT,"r",stdin);
   freopen(OUTPUT,"w",stdout);
   
   scanf("%d",&n);

   for (i=0; i<2*n-1; i++){
      dp=0;
      ds=0;
   }

   for (i=0; i<n; i++)
      for (j=0; j<n; j++){
         scanf("%lld",&x);
         dp[n+i-j]=dp[n+i-j]+x;
         ds[i+j]=ds[i+j]+x;
      }

      maxp=-1000000000;
      maxs=-1000000000;

   for (i=0; i<2*n-1; i++){
      if (dp>maxp)
         maxp=dp;
      if (ds>maxs)
         maxs=ds;
   }

   if (maxp>maxs)
      printf("%lld",maxp);
   else
      printf("%lld",maxs);

}


cum de iau incorect la ultimul test?
6  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 05, 2013, 21:44:28
am rezolvat cu stack overflow dar memoria si timpul trece cu mult peste
7  infoarena - concursuri, probleme, evaluator, articole / Arhiva Infoarena Monthly / Răspuns: 004 Diagonale : Decembrie 05, 2013, 20:07:05
#include <stdio.h>
 
#define INPUT "diagonale.in"
#define OUTPUT "diagonale.out"
 
long long maxParaleleP (int n, long long a[1001][1001]){ //calculeaza suma maxima a liniilor paralele cu diagonala princpala
    int i,j,k;
    long long s,max=a[0][0];
    for (k=0; k<n-1; k++){
        s=0;
        for (i=0; i<n; i++)
            for (j=0; j<n; j++)
                if (i-j==k)
                    s=s+a[j];
        if (s>max)
            max=s;
    }
    return max;
}
 
long long maxParaleleS (int n, long long a[1001][1001]){  //calculeaza suma maxima a liniilor paralele cu diagonala secundara
    int i,j,k;
    int s,max=max=a[0][0];
    for (k=(n-1)*2; 0<k; k--){
        s=0;
        for (i=0; i<n; i++)
            for (j=0; j<n; j++)
                if (i+j==k)
                    s=s+a[j];
        if (s>max)
            max=s;
    }
    return max;
}
 
int main(){
    int n;
    long long a[1001][1001];
 
    freopen(INPUT,"r",stdin);
    freopen(OUTPUT,"w",stdout);
    scanf("%d",&n);
 
 
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
            scanf("%lld",&a[j]);
 
    if (maxParaleleP(n,a) > maxParaleleS(n,a))
        printf("%lld",maxParaleleP(n,a));
    else
        printf("%lld",maxParaleleS(n,a));
    return 0;
}

de ce imi da stack overflow ? si cu [1000][1000] merge ? cum se face ca depasesc memoria si timpul si celelalte surse de le`am vazut nu depasesc ?
Pagini: [1]
Powered by SMF 1.1.19 | SMF © 2006-2013, Simple Machines