Partage
  • Partager sur Facebook
  • Partager sur Twitter

salut tous les modes

Densité la plus proche france ioi

12 août 2021 à 23:15:10

jai bloque dans ce probleme en france ioi

le probleme est :

Lorsque des clients vous demandent des blocs de plastique d'une densité dont vous ne disposez pas, vous souhaitez pouvoir leur proposer un bloc d'une densité proche.

Ecrivez un programme qui lit la description de votre bloc, puis répond aux questions de vos clients, en indiquant la densité de plastique la plus proche de celui demandé, pour lequel vous disposez d'au moins un bloc. S'il y a plusieurs densités aussi proches de celle demandée, donnez la plus petite (cela vous coûte moins cher).

et voila mon code
#include<bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    int n, m;
    cin>>n;
    vector<int>v;
    for(int i = 0; i < n; i++) {
        int val;
        cin>>val;
        v.push_back(val);
    }
    sort(v.begin(), v.end());
    cin>>m;
    for(int i = 0; i < m; i++) {
        int val;
        cin>>val;
        int j = 0;
        while(j < n && v[j] < val) 
            j++;
        if(j == 0)
            cout<<v[j]<<"\n";
        else if(v[j] == val)
            cout<<val<<"\n";
        else
            cout<<v[j - 1]<<"\n";
    }
}
 mon code donne 8 test correctes sur 10 tests
  • Partager sur Facebook
  • Partager sur Twitter
13 août 2021 à 1:41:59

Tu dois traiter séparément les cas où j==0 (plus petit que le premier) et j==n (plus grand que le dernier)
Dans les autres cas on demande le plus près, mais il peut être avant ou après la valeur associée à j.
if val-v[j-1] <= v[j]-val)
 cout v[j-1] ...
else
 cout v[j] ...
Si je ne me suis pas trompé dans mes indices, ça devrait marcher ...

-
Edité par PierrotLeFou 13 août 2021 à 1:47:37

  • Partager sur Facebook
  • Partager sur Twitter

Le Tout est souvent plus grand que la somme de ses parties.

10 août 2024 à 15:04:18 - Message modéré pour le motif suivant : Merci d’utiliser le bouton code pour insérer un code sur le forum


10 août 2024 à 15:29:54

@KimKossiAfangnike      Bonjour, merci de ne pas squatter le sujet des autres, créer votre propre sujet dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (Un bonjour ou des salutations à la communauté et se termine par des remerciements par avances pour les futures réponses), la description de votre problème et le code que vous avez écrit inséré sur le forum à l'aide de l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter