Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <cmath>
- using namespace std;
- ifstream in ("betasah.in");
- ofstream out ("betasah.out");
- void completare_dame_stg (int tabla [500000], int contor) {
- int dif1 = round (sqrt (contor * 2));
- int dif2 = dif1 - 1;
- int aux1 = dif1 * (dif1 - 1) / 2 + 1;
- int aux2 = dif1 * (dif1 + 1) / 2;
- int aux3 = dif1;
- int aux4 = dif1;
- bool ok_stg_sus = 1, ok_stg = 1, ok_stg_jos = 1;
- //stanga
- do {
- contor --;
- if (ok_stg_sus) {
- if (tabla [contor - dif2] != 1 && tabla [contor - dif2] != 2 && contor - dif2 > 0) {
- if (tabla [contor - dif2] != 3) {
- tabla [contor - dif2] = 3;
- }
- aux3 --;
- dif2 += aux3;
- if (round (sqrt ((contor - dif2) * 2)) == round (sqrt ((contor - dif2 + aux3)*2))) {
- ok_stg_sus = 0;
- }
- }
- else {
- ok_stg_sus = 0;
- }
- }
- if (ok_stg_jos) {
- if (tabla [contor + dif1] != 1 && tabla [contor + dif1] != 2 && contor + dif1 <= aux2) {
- if (tabla [contor + dif1] != 3) {
- tabla [contor + dif1] = 3;
- }
- aux4 ++;
- dif1 += aux4;
- }
- else {
- ok_stg_jos = 0;
- }
- }
- if (ok_stg) {
- if (tabla [contor] != 1 && tabla [contor] != 2) {
- if (tabla [contor] != 3) {
- tabla [contor] = 3;
- }
- }
- else {
- ok_stg = 0;
- }
- }
- }
- while (contor > aux1);
- }
- void completare_dame_dr (int tabla [500000], int contor) {
- int dif1 = round (sqrt (contor * 2));
- int dif2 = dif1 - 1;
- int aux1 = dif1 * (dif1 - 1) / 2 + 1;
- int aux2 = dif1 * (dif1 + 1) / 2;
- int aux3 = dif1;
- int aux4 = dif1;
- bool ok_dr_sus = 1, ok_dr = 1, ok_dr_jos = 1;
- //dreapta
- do {
- contor ++;
- if (ok_dr_sus) {
- if (tabla [contor - dif2] != 1 && tabla [contor - dif2] != 2 && contor - dif2 > 0) {
- if (tabla [contor - dif2] != 3) {
- tabla [contor - dif2] = 3;
- }
- aux3 --;
- dif2 += aux3;
- if (round (sqrt ((contor - dif2) * 2)) == round (sqrt ((contor - dif2 + aux3)*2))) {
- ok_dr_sus = 0;
- }
- }
- else {
- ok_dr_sus = 0;
- }
- }
- if (ok_dr_jos) {
- if (tabla [contor + dif1] != 1 && tabla [contor + dif1] != 2 && contor + dif1 <= aux2) {
- if (tabla [contor + dif1] != 3) {
- tabla [contor + dif1] = 3;
- }
- aux4 ++;
- dif1 += aux4;
- }
- else {
- ok_dr_jos = 0;
- }
- }
- if (ok_dr) {
- if (tabla [contor] != 1 && tabla [contor] != 2) {
- if (tabla [contor] != 3) {
- tabla [contor] = 3;
- }
- }
- else {
- ok_dr = 0;
- }
- }
- }
- while (contor > aux1);
- }
- void completare dame_sj
- int main() {
- int n, d, k, contor, x, y;
- in >> n >> d >> k;
- int tabla [n * (n + 1) / 2];
- //dame
- for (contor = 0; contor < d; contor ++) {
- in >> x >> y;
- tabla [x * (x + 1) / 2 + y] = 1;
- }
- //patrate negre
- for (contor = 0; contor < k; contor ++) {
- in >> x >> y;
- tabla [x * (x + 1) / 2 + y] = 2;
- }
- //parcurgere vector
- for (contor = 0; contor < n * (n + 1) / 2; contor ++) {
- if (tabla [contor] == 1) {
- completare_dame (tabla, contor);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement