Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int main() {
- unsigned i, j, cnt = 0; // conori de pozitie si numarul de mutari
- char sir[1000]; // vectorul in care salvam biti
- FILE *f; // variabila de tip fiser
- f = fopen("in.txt", "r"); // deschidem in mod citire
- fscanf(f, "%u%s", &j, sir);// citim dreapta
- fclose(f);// numai avem nevoie de fiser asa ca i-l inchdem
- f = fopen("out.txt", "w"); // deschidem in mod scriere
- j--; // ultimia pozitie din vector este j -1 asa ca-l decrementam
- fprintf(f, " \n"); // lasam un rand liber sa adaugam numarul ed mutari pe primul rand
- for (i = 0; i < j; i++) { // parcugrem sirul de la stanga la dreapta
- if (sir[i] == '1') // daca am gasit o val de 1 ne uitam daca mai exista vre-un 0 indreapta sa schimam
- for (; i != j; j--) // parcurgem sirul de la dreapta la stanga
- if (sir[j] == '0') { // exista 0 in dreapta si facem schimbarea
- cnt++; // incrementam numarul de mutari
- sir[i] = '0'; // schimbam
- sir[j] = '1'; // schimbam
- fprintf(f, "%u %u\n", i + 1, j + 1); // afisam indici, j + 1 deaorece trebuie afisat [1, n] si noi i avem in pozitie [0, n-1]
- break; // revenim la primul for
- }
- }
- fseek(f, 0, SEEK_SET);// punem cursorul la inceputul fiserului
- fprintf(f, "%u", cnt);// punem numarul de schimbari la inceputul fiserului
- fclose(f); // inchidem fiserul
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment