Cod sursa(job #3150820)

Utilizator PescarusTanislav Luca Andrei Pescarus Data 18 septembrie 2023 17:11:15
Problema Farfurii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream f("farfurii.in");
ofstream g("farfurii.out");

const int nmax = 100005;
int n, k;
int a[nmax];

int main(){
  f >> n >> k;
  for(int i = 1; i <= n; i++){
    a[i] = i;
  }
  int m = 0;
  for(int i = 1; i <= n; i++){
    if(i * (i - 1) / 2 <= k){
      m = i;
    }
  }
  if(m * (m - 1) / 2 == k){
    for(int i = n - m + 1; i <= n; i++){
      int aux = a[i];
      a[i] = a[i + m - 1];
      a[i + m - 1] = aux;
    }
  }
  else{
    int val = n - ((m + 1) * m / 2 - k);
    for(int i = n - m; i <= n; i++){
        int aux = a[i];
        a[i] = a[i + m];
        a[i + m] = aux;
    }
    int aux1 = a[n - m - 1];
    a[n - m - 1] = a[val];
    a[val] = aux1;
  }

  for(int i = 1; i <= n; i++){
    g << a[i] << ' ' ;
  }
}