Cod sursa(job #1333906)

Utilizator diac_paulPaul Diac diac_paul Data 3 februarie 2015 18:20:03
Problema Combinari Scor 90
Compilator cpp Status done
Runda Arhiva educationala Marime 1.65 kb
#include <fstream>
#include <stdlib.h>
using namespace std;
ifstream fin("combinari.in");
ofstream fout("combinari.out");
char a[28500][18];

int va, vb;
int M=10;
void ord(int b[19][28500],int n)
{
    int aux,i,j,k=1;
    while(k)
    {     k=0;
        for(i=1;i<n;i++)
      {
          for(j=1;j<=n;j++)
              if(a[i][j]>a[i+1][j])
                {
                    k=1;

                }
                else if(a[i][j]<a[i+1][j]) break;
           if(k=1)
          {
               for(j=1;j<=n;j++)
               {
                  aux=a[i][j];
                  a[i][j]=a[i+1][j];
                  a[i+1][j]=aux;
               }
          }
       }
    }
}

int comp(const void *a, const void *b) {

	char *aa = (char *)a;
	char *bb = (char *)b;

	int i;
	for (i = 1; aa[i] == bb[i] && i <= M; i++);

	if (i <= M) {
		return aa[i] - bb[i];
	}
	return 0;
}

int main()
{ int n,i, gata=0,k,p, S[20],l,c,j;
  l=1;c=0;
  fin>>n>>k;
  M = k;

  for(i=0;i<=n;i++) S[i]=0;
    while(!gata)
    { 
	   p=0;
       for(i=1;i<=n;i++) if (S[i]) p++;
       if(p==k)
        {
			c = 1;
            for(i=1;i<=n;i++)
                {
                    if(S[i]) {
                      a[l][c]=i;
					  c++;
					}
                }
                l++;
        }

        for(i=1; i<=n && S[i];i++) S[i]=0;
        if(i==n+1)gata=1;
        else S[i]=1;
    }

   l--;
   qsort(a+1, l, sizeof(a[0]), comp);

    //ord(a,n);

    for(i=1;i<=l;i++)
       {
        for(j=1;j<=n;j++)
         if(a[i][j]) fout<< (int)a[i][j]<<' ';
         fout<<'\n';
       }
    return 0;
}