Cod sursa(job #2861937)

Utilizator MokaDomos Mozes Moka Data 4 martie 2022 18:35:27
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.78 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;
ifstream f("niceset.in");
ofstream g("niceset.out");
int tomb[100001];
int kezd[100001];
vector<int> v;
int n;
unsigned long long k;
unsigned long long maxm=1;
int tavszamolas(int index)
{
    int db=0;
    unsigned long long osszeg=0;
    int belsoindex=index+1;
    while(osszeg<=k){
        db++;
        if(belsoindex>=n){
            return db;
        }
        for (int i=belsoindex-1;i>=index;i--){
            osszeg+=v[belsoindex]-v[i];
        }
        belsoindex++;
    }
    //cout<<osszeg<<endl;
    return db;
}
int main()
{
    bool egyes=true;
    bool harmas=true;
    bool kettes =true;
    int egyesek=0;
    int kettesek=0;
    f >> n;
    f >> k;
    for (int i = 0; i < n; i++)
    {
        int a;
        f >> a;
        if(a!=1)
            egyes=false;
        if(a!=i+1)
            harmas=false;
        if(a!=1 && a!=2){
            kettes=false;
        }
        if(a==1){
            egyesek++;
        }
        else if(a==2){
            kettesek++;
        }
        v.push_back(a);
    }
    if(egyes){
        g<<n;
    }
    else if (kettes){
        if(egyesek>kettesek){
            g<<egyesek;
        }
        g<<kettesek;
    }
    else if (harmas){
        unsigned long long osszeg = tavszamolas(0);
        g<<osszeg;
    }
    else{
    sort(v.begin(),v.end());
    /*for (int i :v){
        cout<<i<<" ";
    }*/
    //cout<<endl;
    for (int i=0; i<n; i++)
    {
        unsigned long long osszeg = tavszamolas(i);
        if(osszeg>maxm){
            maxm=osszeg;
        }
        //cout<<osszeg<<" "<<v[i]<<endl;
    }
    g<<maxm;
    }
    g.close();
    f.close();
}