Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Nilda Eufrázio

olimpiadas computação,olimpiadas,c++

Recommended Posts

programa retirado da olimpiada brasileira de computação, estpou a 8 horas tentando fazer e simplesmente não consigo, tentei de varias formas.

a primeira

 

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
 
int main() 
{
    int b,i,k,l,m,n,j, c;
   int olimpiadas[100];
    int medalhas[200][3];
 
i=0;
j=0;
m=0;
n=0;
k=0;
l=0;
c=0;
 
    printf("\nQuantos paises estao participando?:");
    scanf("%d", &n);
    
    printf("\nQuantas modalidades envolvidas?:");
    scanf("%d", &m);
    
  
    for(i=0; i<m; i++)
    {for(j=0; j<3; j++)
    {
              printf("\nInsira a quantidade de medalhas :", l,k);
               fflush (stdin);
              scanf("%d", &medalhas[l][c]);
              
              }}
    printf("%3d %3d",&medalhas[l][c]);
    
    getch();

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

int main()
{
int i,j,l,m,n,v;
int paises[100];
int medalhas[200][3];

i=0;
j=0;
m=0;
n=0;
l=0;
v=0;

printf("\nQuantos paises estao participando?:");
scanf("%d", &n);

printf("\nQuantas modalidades envolvidas?:");
scanf("%d", &m);


for(l=0; l<m; l++)
{for(i=0; i<3; i++)
{ printf("Entre com a quantidade de medalhas:");
scanf("%d", &medalhas[l][i]);

}}

for(l=0; l<m; l++)
{for(i=0; i<3; i++)
{ for(j=0; j<n;j++)
{paises[j]=medalhas[l][i];}}}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Meio difícil saber como ajudar se não se sabe nem o que o enunciado pede.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O enunciado é gigantesco.

Vou tentar dar uma resumida

 

Entrada

 

A primeira linha da entrada contém dois números inteiros N e M, separados por um espaço em branco, indicando respectivamente o número de países e número de modalidades esportivas envolvidas na competição. Os países são identificados por números inteiros de 1 a N. Cada uma das M linhas seguintes contém três números inteiros O, P e B, separados por um espaço em branco, representando os países cujos atletas receberam respectivamente medalhas de ouro, prata e bronze. Assim, se uma das M linhas contém os números 321, significa que nessa modalidade a medalha de outro foi ganha pelo país 3, a de prata pelo país 2 e a de bronze pelo país 1.
Saída
Seu programa deve imprimir na saída padrão uma linha contendo N números, separados por um espaço em branco, representando os países na ordem decrescente de classificação (o primeiro número representa o país que é o primeiro colocado,o segundo número representa o país que é o segundo colocado, e assim por diante).
Restrições
 1 ≤ N ≤ 100 
1 ≤ M ≤ 100 
1 ≤ O ≤ N
 1 ≤ P ≤ N 
1 ≤ B ≤ N

 

consegui isso aqui

 

agora tem que por as restrições

 

 

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
 
int main() 
{
    int i,j,l,m,n,f;
    int paises[100];
    int medalhas[200][3];
    int classifica;
   
i=0;
j=0;
m=0;
n=0;
l=0;
f=0;
    printf("\nQuantos paises estao participando?:");
    scanf("%d", &n);
    
    printf("\nQuantas modalidades envolvidas?:");
    scanf("%d", &m);
    
 
  
    for(l=0; l<m; l++)
    {for(i=0; i<3; i++)
      { printf("Entre com a quantidade de medalhas:");
            scanf("%d", &medalhas[l][i]); 
                       
                        }}
             for(l=0; l<m; l++)
    {for(i=0; i<3; i++)
    {for(l=0; l<m; l++)
    {for(i=0; i<3; i++)
      { for(j=0; j<n;j++)   
      {paises[j]=medalhas[l][i];}}}}}
      
                
              
      for (f=0;f<n ; f++)
      {for(j=i;j<n ;j++)
      { for (f=0;f<n;f++){
                     if (paises[f]<paises[j])
                     {classifica=paises[f];
                     paises[f]= paises[j];
                     paises[f]=classifica;}}}}
                     
                     for(j=0;j<n ;j++)
                 printf("%d", paises[j]);
 
 
    getch();

Compartilhar este post


Link para o post
Compartilhar em outros sites


#include "stdafx.h"

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

 

using namespace System;

 

int main() {

int i=0,j,l,f;

int m,n; // Pais / modalidade

int o,p,b; // medalhas Ouro Prata Bronze

int paises[100];

int medalhas[200][3];

int classifica;

 

i=j=m=n=l=f;

 

do{

printf("\nQuantos paises estao participando?:");

scanf("%d", &n);

printf("\nQuantas modalidades envolvidas?:");

scanf("%d", &m);

 

while( (l < m) && (i < 3) ){

l++;

i++;

printf("Entre com a quantidade de medalhas:");

scanf("%d", &medalhas[l]);

}

 

while( (l < m) && (i < 3) && (j<n)){

l++;

i++;

j++;

paises[j]=medalhas[l];

}

 

while( (f < n) && (j < n)){

f++;

j++;

if (paises[f]<paises[j]){

classifica=paises[f];

paises[f]= paises[j];

paises[f]=classifica;

}

}

 

for(j=0;j<n ;j++)

printf("%d \n", paises[j]); // esse loop acho que deve ser fora daqui...

 

 

}while((n<=100) && (m<=100) && (o<=n) && (p<=n) && (b<=n));// restricao

// creio que a restricao deve ser inserida num loop global..

// para ficar verificando ate o fim....

// agora voce tera que ver somente a questao de como fica o resto do code

getch();

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse nao é um problema muito complexo, de Maratona de programação.

Coloque os Exemplos de Saída e Entrada, para que os teste possam ser feitos.

#include <cstdio>
#include <cstdlib>

void main(){
  int n , ouro , prata , bronze ;
  scanf("%d %d", &n , &m);
  int vetor[n] ;

  for(int j = 0 ; j < n j++){
    vetor[j] = 0 ;
  } 

  for(int i = 0 ; i < m ; i ++){
    scanf("%d %d %d",&ouro ,&prata, &bronze);
    vetor[ouro] += 100 ;
    vetor[prata] += 10 ;
    vetor[bronze] += 1 ;
  }

  //Utilizar Metodo para Ordena Vetor em Ordem Decrescente
  // Exemplo MergeSort
 
  for(int k = 0 ; k < n-1 ; k++){
   printf("%d ", vetor[k]);
 }
 printf("%d",vetor[n-1]);
}

Se os dados que você passou desse problemas estão corretos então isso deve funcionar.

 

Dicas para Resolução desses problemas:

  1. Você não deve nessas competições se preocupar com as Restrições, elas te auxiliam na escolha de variáveis, entre ( int, unsigned int, double, long , long long). Pois eles, só atribuem Entradas ao teu programa e avalia a Saída.
  2. A formatação da saída deve ser feita de forma rigorosa, com o padrão por eles estabelecidos, um espaço em branco na Saída fará o teu programa não passar. Por isso NUNCA utiliza printf com perguntas, pois que esta te avaliando é um PC.
  3. Outra dica, o tempo máximo de execução do programa é fundamental, por isso pense sempre em soluções o máximo otimizadas. Uma delas para esse código é método de Ordenação. Se você escolher o MergeSort ou QuickSort, talves passe.

Caso você queira continua com treinos para Maratona de Programação, existem sites que propoe problemas exemplo deles são:

http://www.urionlinejudge.com.br/judge/pt/users/login

http://br.spoj.com/

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.