Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include"stdlib.h"
- #include"stdio.h"
- #include"string.h"
- #include<stack>
- #include<list>
- #include<vector>
- #include<queue>
- using namespace std;
- int charcomp(const void *a,const void *b){
- return(*(char *)a)-(*(char *)b);
- }
- FILE *io;
- char poia_na_bgaleis[501];
- short posa_na_bgaleis;
- list<char>maxi;
- char yparxei_maxi;
- void tel_lista(list<char> l){
- if(!yparxei_maxi){
- yparxei_maxi=1;
- maxi=l;
- return;
- }
- list<char>::iterator i1,i2;
- for(i2=l.begin(),i1=maxi.begin();*i1<=*i2;i1++,i2++){
- if(*i1<*i2){
- maxi=l;
- return;
- }
- }
- }
- void bgale(list<char> apo_pou, short poio){
- list<char>::iterator it;
- list<char>l_temp;
- list<char>::iterator lit;
- int i,j;
- /*
- printf("Exw ");
- for(it=apo_pou.begin();it!=apo_pou.end();it++){
- printf("%c",*it);
- }
- printf("\n");
- */
- if(poio==posa_na_bgaleis){
- //printf("Telos!\n");
- tel_lista(apo_pou);
- }
- for(i=0,it=apo_pou.begin();it!=apo_pou.end();i++,it++){
- if(*it==poia_na_bgaleis[poio]){
- //printf("Bgazw %c\n",*it);
- l_temp=apo_pou;
- lit=l_temp.begin();
- advance(lit,i);
- l_temp.erase(lit);
- bgale(l_temp,poio+1);
- }
- }
- //printf("Feugw\n");
- }
- int main(){
- int i,j,k;
- char arxiko[501];
- list<char>arxiko_bgale;
- io=fopen("rdigits.in","r");
- fscanf(io,"%s",arxiko);
- fscanf(io,"%s",poia_na_bgaleis);
- //printf("Arxiko strlen: %d\n",strlen(arxiko));
- for(i=0,j=strlen(arxiko);i<j;i++){
- arxiko_bgale.push_back(arxiko[i]);
- }
- //printf("Teliko arxiko: %d\n",arxiko_bgale.size());
- posa_na_bgaleis=strlen(poia_na_bgaleis);
- qsort(poia_na_bgaleis,posa_na_bgaleis,1,charcomp);
- //printf("Sort poia: %s\n",poia_na_bgaleis);
- /*
- printf("Sygkriseis\n");
- while(1){
- arxiko_bgale.clear();
- scanf("%s",arxiko);
- for(i=0,j=strlen(arxiko);i<j;i++){
- arxiko_bgale.push_back(arxiko[i]);
- }
- tel_lista(arxiko_bgale);
- printf("Megisto: ");
- list<char>::iterator it;
- for(it=maxi.begin();it!=maxi.end();it++){
- printf("%c",*it);
- }
- printf("\n");
- }
- */
- bgale(arxiko_bgale,0);
- freopen("rdigits.out","w",io);
- list<char>::iterator it;
- for(it=maxi.begin();it!=maxi.end();it++){
- fprintf(io,"%c",*it);
- }
- fprintf(io,"\n");
- fclose(io);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement