# TOPIC

PROBLEM 1827 - URI Fórum 1.0

#### URI Online Judge asked 5 years ago

URI Online Judge Fórum 1.0

This topic was solved and cannot recieve new replies.

• #### Klausnery replied 3 years ago

Estou tomando WA 10%...

while True:

``````try:
l=int(input())
mat= [[0 for i in range(l)]for j in range(l)]

except EOFError:
break

n=l/3
m= (2*l)/3
k=l/2

for i in range(l):
mat[i][l-1-i]='3'

for i in range(l):
mat[i][i]='2'

for i in range(n,m+1):
for j in range(n,m+1):
mat[i][j]='1'

mat[k][k]='4'

for i in range(l):
line=['%s' %w for w in mat[i]]
print ''.join(line)

#print('\n')``````
• #### Ramon G. Gonze replied 3 years ago

Olá pessoal,

Estou com um Wrong answer de 20%, alguém poderia me auxiliar? Obrigado!

Código:

``````#include <stdio.h>
#include <stdlib.h>

int main(){
int x, i, j, k, **m;

while(scanf("%d", &x) != EOF){
m = (int **) malloc(x*sizeof(int*));
for(i = 0; i < x; i++){
m[i] = (int *) malloc(x*sizeof(int));
}

for(i = 0, k = x-1; i < x; i++, k--){ //linha
for(j = 0; j < x; j++){
m[i][j] = 0;
}
m[i][i] = 2;
m[i][k] = 3;
}

for(i = 0; i < x; i++){
for(j = 0; j < x; j++){
if( (i >= (x-1)/3 && j >= (x-1)/3) && (i <= (2*x+1)/3 && j <= (2*x+1)/3)){
m[i][j] = 1;
}
}
}

m[x/2][x/2] = 4;

for(i = 0; i < x; i++){
for(j = 0; j < x; j++){
printf("%d", m[i][j]);
}
printf("\n");
}
printf("\n");

for(i = 0; i < x; i++){
free(m[i]);
}
free(m);
}
}``````
• #### Felipe Derkian replied 4 years ago

oi galera tudo bom....? alguem pode me ajudar estou recebendo excesso de tempo...

include include

int main(){

``````int N,i,j;

while(scanf("%d",&N)&& EOF){

if(N>=5 && N<=101){

for(i=1;i<=N;i++){
for(j=1;j<=N;j++){
if(j==1+N/2 && i==1+N/2){
printf("4");
}
else if(i>N/3 && i<=N-N/3 && j>N/3 && j<=N-N/3){
printf("1");
}
else if(i==j){
printf("2");
}
else if(i==N+1-j){
printf("3");
}
else{ printf("0");
}
}
printf("\n");
}
printf("\n");

}
}``````

}

• #### Fernando replied 4 years ago

RUN TIME ERROR, RUBY? WHY?

x = gets() while x.length >1 x = x.to_i unos = x/3 inicio = 0 fin = x-1 centro = x/2 for fila in (0..(x-1)) for col in (0..(x-1))

``````        if col == centro and fila == centro
print "4"
elsif (col >= unos and (x-1-unos) >= col) and (fila >= unos and (x-1-unos) >= fila)
print "1"
elsif col == inicio
print "2"
elsif col == fin
print "3"
else
print "0"
end
end
inicio +=1
fin -=1
print "\n"
end
print "\n"
x = gets()``````

end gets()

• #### Fernando replied 4 years ago

Hello, I speak Spanish.

Have RumTimeError, why?

RUBY, RUBY, RUBY

x = gets() while x.length >1 x = x.to_i unos = x/3 inicio = 0 fin = x-1 centro = x/2 for fila in (0..(x-1)) for col in (0..(x-1))

``````        if col == centro and fila == centro
print "4"
elsif (col >= unos and (x-1-unos) >= col) and (fila >= unos and (x-1-unos) >= fila)
print "1"
elsif col == inicio
print "2"
elsif col == fin
print "3"
else
print "0"
end
end
inicio +=1
fin -=1
print "\n"
end
print "\n"
x = gets()``````

end gets()

• #### Rafael Wruck replied 4 years ago

Boa tarde Fiz várias mudanças, mas sempre ultrapassa o tempo limite. Não sei mais o que alterar, ou tenho que mudar a lógica toda. Já alterei para vários "For" ou com função, de todas as formas o resultado é o mesmo - "Time limit exceeded" Não sei mais o que alterar.

``````while True:
try:
l=[]
n=int(input())
for i in range(n):
l.append([0]*n)
ini, fim=int(n/3), (n-(int(n/3)))

if (5<=n<=101) and (n%2!=0):
for i in range(n):
for j in range(n):
if ((i<ini) or (i>=fim)):
if i==j:
l[i][j]=2
elif (j==(n-1-i)):
l[i][n-1-i]=3
elif (i>=ini) or (i<fim):
if (ini<=j<fim):
l[i][j]=1
if i==int(n/2) and j==int(n/2):
l[int(n/2)][int(n/2)]=4
print (l[i][j], end = "")
if j==(len(l)-1):
print()
print()
except:
break``````
• #### 🧙The Install Wizard 🧙 replied 5 years ago

A função SCANF nao coloca o valor EOF na variável. Ela retorna o valor EOF.

• #### Rafael Kusdi replied 5 years ago

futuquei tanto que achei

TLE = while(scanf("%d",&tamanho),tamanho != EOF) ACCEPTED = while(scanf("%d",&tamanho) != EOF)

vai entender, em um exercicio anterior a esse não deu nenhum problema usar o while com ',' e a variavel != EOF assim, era pra parar no EOF tb.

• #### Rafael Kusdi replied 5 years ago

Boa noite Galera, No meu código esta dando TLE, mas pra mim esta estranho, eu cronometrei o tempo e pareceu bem satisfatório o resultado alguém pode me dar dica?

``Segundo lugar no rank de C :D``

Thanx :D

• #### Filipe Teotônio Ramalho Mendonça replied 5 years ago

Presentantion Error devido ao fato de que você não está pulando um linha depois de uma matriz. Tenta por um cout << endl; no final do while ;)

• #### Alexandre Martins replied 5 years ago

Recebo presentation error com esse código aqui :(

``````#include <iostream>

using namespace std;

int main()
{
int i,n,j;
while(cin >> n)
{
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
if(j==i && i==1+n/2) cout << 4;
else if(i>n/3 && i<=n-n/3 && j>n/3 && j<=n-n/3)
cout << 1;
else if(i==j) cout << 2;
else if(i==n+1-j) cout << 3;
else cout << 0;
}
cout << endl;
}
}
}``````
• #### Gabriel Oraboni Carvalho replied 5 years ago

Obrigado pela ajuda, irei rever (:

• #### Thulio Amorim replied 5 years ago

Teste a entrada 9 no seu código e compare com a do Toolkit, tive o mesmo problema. A observação na descrição pode lhe ajudar a resolver.

Boa sorte.

• #### Gabriel Oraboni Carvalho replied 5 years ago

Alguém poderia me ajudar, não sei o porquê de dar WA 50%

``Resolvido``
• #### Ronieri Sales replied 5 years ago

No problema está especificando que a entrada é um número ímpar entre 5 e 101, incluindo eles.

• #### Rafa Lopes replied 5 years ago

Boa madrugada para todos! Eu quero saber outro fica o centro se a entrada é um numero PAR ? 6 200003 020030 001100 001400 030020 300002

Valeu!!!