Cod sursă (job #814936)

Utilizator avatar Sebi_Ionescu Ionescu Sebastian Andrei Sebi_Ionescu IP ascuns
Problemă Ruleta1 ( clasa a 6-a ) Compilator c-32 | 1,06 kb
Rundă Arhiva de probleme Status evaluat
Dată 15 mar. 2025 13:15:54 Scor 80
#include <stdio.h>
#define MAXN 10000
int v[MAXN];
int poz[MAXN + 1];

int main()
{
    FILE *fin, *fout;
    int n, i, iesire, st, x, st1, nr, rot;
    fin = fopen("ruleta1.in", "r");

    fscanf(fin, "%d", &n);
    for(i = 0; i < n; i++){
      fscanf(fin, "%d", &v[i]);
      poz[i] = (i + 1) % n;
    }

    fclose(fin);
    fout = fopen("ruleta1.out", "w");
    x = n;
    st = rot = iesire = i = 0;
    st1 = 1;
    while(iesire == 0){
      if(poz[i] == (i + 1) % n && v[i] <= v[poz[i]] && v[i] > 0){
        v[poz[i]] = v[poz[i]] - v[i];
        st = 1;
        if(v[poz[i]] == 0 && st1 == 1){
          x = i;
          st1 = 0;
        }
        else if(v[poz[i]] >= v[i]){
          st1 = 1;
          poz[x] = i;
          x = n;
        }
      }
      if(i > poz[i]){
        if(st == 0)
          iesire = 1;
        st = 0;
        rot++;
      }
      i = poz[i];
    }
    nr = 0;
    for(i = 0; i < n; i++)
      if(v[i] > 0)
        nr++;
    fprintf(fout, "%d %d\n", rot, nr);
    fclose(fout);
    return 0;
}