Cod sursa(job #1070102)

Utilizator vlad_DVlad Dumitriu vlad_D Data 30 decembrie 2013 23:18:33
Problema Farfurii Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>

using namespace std;
int N, K;

struct nod {
  int v;
  nod* next;
};

int main() {
  freopen("farfurii.in", "r", stdin);
  freopen("farfurii.out", "w", stdout);
  scanf("%d %d", &N, &K);
  nod* lista = new nod;
  lista->v = 1;
  lista->next = NULL;
  nod* p = lista;
  for (int i = 2; i <= N; ++i) {
    p->next = new nod; p = p->next;
    p->v = i; p->next = NULL;
  }
  for (int i = 1; i < N; ++i) {
    int K2 = (N - i) * (N - i - 1) / 2;
    int al = 0;
    if (K2 < K) al = K - K2, K -= al;
    p = lista;
    nod* pr = NULL;
    while (al--) { pr = p; p = p->next; }
    printf("%d ", p->v);
    if (pr != NULL) { pr->next = p->next; delete p;}
    else { lista = p->next; delete p; }
  }
  printf("%d\n", lista->v);
  delete lista;
  return 0;
}