Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- int cautareBinara(int nr)
- {
- int inc = 0, sf = nr, ans;
- while (inc <= sf)
- {
- int mid = (inc + sf) / 2;
- if (1ll * mid * (mid + 1) / 2 >= nr)
- {
- ans = mid;
- sf = mid - 1;
- }
- else
- {
- inc = mid + 1;
- }
- }
- return ans;
- }
- void gasesteCoordonate(int x, int &linie, int &col)
- {
- linie = cautareBinara(x);
- col = x - (linie - 1) * linie / 2;
- }
- int gasesteNr(int linie, int coloana)
- {
- return (linie - 1) * linie / 2 + coloana;
- }
- int main()
- {
- int x, y;
- cin >> x >> y;
- int xLinie, xCol, yLinie, yCol;
- gasesteCoordonate(x, xLinie, xCol);
- gasesteCoordonate(y, yLinie, yCol);
- int linieDir = (xLinie < yLinie) ? 1 : -1;
- int colDir = (xCol < yCol) ? 1 : -1;
- while (xLinie != yLinie && xCol != yCol)
- {
- cout << gasesteNr(xLinie, xCol) << ' ';
- xLinie += linieDir;
- xCol += colDir;
- }
- while (xLinie != yLinie)
- {
- cout << gasesteNr(xLinie, xCol) << ' ';
- xLinie += linieDir;
- }
- while (xCol != yCol)
- {
- cout << gasesteNr(xLinie, xCol) << ' ';
- xCol += colDir;
- }
- cout << gasesteNr(xLinie, xCol) << ' ';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement