Facebook
From ja, 7 Years ago, written in C++.
This paste is a reply to Re: cos from ja - view diff
Embed
Download Paste or View Raw
Hits: 426
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. // N - liczba wagoników
  9. // M - minimalna liczba kolejek
  10. // K - maks ilość błedów w kolejce
  11. // pierwszy warunek: (N/M)=x r[] - zasięg maksymalny
  12. // drugi warunek: x*M-(x-1) - minimalna liczba plusów na ilość kolejek o zasięgu x
  13.  
  14. int main()
  15. {
  16.  
  17.     int N;
  18.     int M;
  19.     int K;
  20.     int x;
  21.     cin>>N;
  22.     cin>>M;
  23.     cin>>K;
  24.     x=(N/M);
  25.     string prod;
  26.     cin>>prod;
  27.     //OPCJA LOSOWANIA
  28.     //srand(time(NULL));
  29.     /*
  30.     for(int i=0; i<N; i++)
  31.     {
  32.         int los=rand()%100;
  33.         //cout<<los%2<<endl;
  34.         if(los%2==0) prod[i]="+";
  35.         else prod[i]="-";
  36.         //cout<<prod[i];
  37.     }
  38.     */
  39.     //OPCJA RĘCZNEGO WPROWADZENIA DANYCH
  40.     //cin>>prod;
  41.  
  42.     int licznik=0;
  43.     int tab[N-1];
  44.  
  45.     //cout<<x<<endl;
  46.     for(int i=0; i<N; i++)
  47.     {
  48.         if(prod[i]=='+') licznik++;
  49.     }
  50.     do
  51.     {
  52.         if(x*M-(x-1)<licznik) x--;
  53.         if(x-K==0) break;
  54.         //cout<<x<<endl;
  55.         for(int i=0; i<(N-1); i++)
  56.         {
  57.             int licznik=0;
  58.             for(int j=(N-2)-i; j>(N-2)-i-x; j--)
  59.             {
  60.                 if(j<0) break;
  61.                 if(prod[j]=='+') licznik++;
  62.             }
  63.             //cout<<licznik<<":"<<K<<" ";
  64.             if(licznik==x-K||licznik>x-K) tab[i]=1;
  65.             else tab[i]=0;
  66.             //cout<<"test"<<endl;
  67.         }
  68.         //cout<<endl;
  69.         int maks=0;
  70.         for(int i=0; i<(N-1); i++)
  71.         {
  72.             //cout<<tab[i]<<" ";
  73.         }
  74.         //cout<<endl;
  75.         for(int i=1; i<(N-1); i=i+x-1)
  76.         {
  77.             if(tab[i-1]==1&&tab[i]==1) tab[i-1]=0;
  78.         }
  79.         for(int i=0; i<(N-1); i++)
  80.         {
  81.             //cout<<tab[i]<<" ";
  82.         }
  83.         for(int i=0; i<(N-1); i++)
  84.         {
  85.             if(tab[i]==1) maks++;
  86.         }
  87.         //cout<<maks;
  88.         if(maks==M||maks>M)
  89.         {
  90.             cout<<maks;
  91.             break;
  92.         }
  93.         else
  94.         {
  95.             cout<<0;
  96.             break;
  97.         }
  98.     } while (x>1);
  99.     return 0;
  100. }
  101.