ProgramoBien

Ejemplo 3 (funciones, ifstream, adventofcode.com)

Feb 1st, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.06 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. int its(string s){
  8.     int sum=0,it=0;
  9.     for(int i=s.size()-1;i>=0;i--){
  10.         double h=((double)s[i]-'0')*pow(10,it);
  11.         sum+=h;
  12.         cout<<sum<<endl;
  13.         it++;
  14.     }
  15.     return sum;
  16. }
  17.  
  18. /*bool compSize(string &s1, string &s2){
  19.     if(s1.size()!=s2.size()) return s1.size()<s2.size();
  20.     return s1<s2;
  21. }*/
  22.  
  23. void reset(int (&abc)[27]){
  24.     for(int i=0;i<27;i++){
  25.         abc[i]=0;
  26.     }
  27. }
  28.  
  29. void letShow(int (&abc)[27]){
  30.     for(int i=0;i<27;i++){
  31.         char a(i+97);
  32.         /*cout<<"["<<a<<"]: "<<abc[i]<<"||";
  33.         if(i%5==0)
  34.             cout<<"\n";*/
  35.     }
  36. }
  37.  
  38. char maxLet(int (&abc)[27]){
  39.     char r='z';
  40.     int val=0,pos=0;
  41.     for(int i=26;i>=0;i--){
  42.         if(abc[i]>=val){
  43.             val=abc[i];
  44.             pos=i;
  45.             r=(i+97);
  46.         }
  47.     }
  48.     abc[pos]=0;
  49.     return r;
  50. }
  51. int main()
  52. {
  53.     int let[27];
  54.     string inp;
  55.     int i=0,sol=0;
  56.     while(getline(cin,inp)){
  57.         i=0;
  58.         bool realRoom=false;
  59.         reset(let);
  60.         while(inp[i]!='['){
  61.             if(inp[i]!='-'){
  62.                 let[(int)inp[i]-97]+=1;
  63.                 //cout<<"IEE";
  64.             }
  65.             ++i;
  66.         }
  67.         string co,num;
  68.         int code;
  69.         char toplet[5];
  70.         for(int i=0;i<5;i++){
  71.             toplet[i]='z';
  72.         }
  73.         letShow(let);
  74.         for(int i=0;i<5;i++){
  75.             toplet[i]=maxLet(let);
  76.             //cout<<"T:"<<toplet[i]<<endl;
  77.         }
  78.         letShow(let);
  79.         co.assign(inp.end()-6 ,inp.end()-1);
  80.         for(int i=0;i<5;i++){
  81.             if(toplet[i]!=co[i]){
  82.                 i=5;
  83.                 realRoom=false;
  84.             }
  85.             else realRoom=true;
  86.         }
  87.         num.assign(inp.end()-10,inp.end()-7);
  88.         code=its(num);
  89.         if(realRoom){
  90.             //cout<<"DAMN\n";
  91.             sol+=code;
  92.             //cout<<sol<<"@";
  93.         }
  94.         //cout<<"WE :"<<co<<" WE";
  95.         letShow(let);
  96.         cout<<"SOl: "<<sol<<"\n";
  97.     }
  98. }
Add Comment
Please, Sign In to add comment