Cod sursa(job #1828520)

Utilizator maria15Maria Dinca maria15 Data 13 decembrie 2016 14:54:54
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <fstream>

using namespace std;

int n, i, partide, coalitii, x, v[20002], s, j, d[20001], a[20001];

ifstream fin("politic.in");
ofstream fout("politic.out");

int main(){
    fin>>n>>x;
    int ant=x;
    int nr=1;
    for(i=2;i<=n;i++){
        fin>>x;
        if(x==ant+1)
            nr++;
        else{
            v[++partide]=nr;
            nr=1;
        }
        ant=x;
    }
    partide+=1;
    v[partide]=nr;
    fout<<partide<<" ";

    // d[i]= cate coalitii se pot forma cu partidele pana la i
    if(v[1]>n/2)
        d[1]=a[1]=1;
    for(i=2;i<=partide;i++){
        s=v[i];
        d[i]=d[i-1]; /*+a[i-1];
        if(d[i-1])
            d[i]++;
        if(a[i-1])
            d[i]++; */
        for(j=i-1;j>0 /*&& s-v[i]+v[j]<=n/2*/;j--){
            s+=v[j];
            if(s>n/2){
                d[i]++;
                a[i]++;
            }
        }
        //d[i]+=a[i-1]+a[i];
    }
    for(i=1;i<=partide;i++)
        fout<<d[i]<<" ";
    fout<<"\n";
      /*for(i=1;i<=partide;i++)
        fout<<a[i]<<" ";*/

    fout<<d[partide];
    return 0;
}