Cod sursa(job #2199239)

Utilizator deliricnagisa deliric Data 26 aprilie 2018 22:53:39
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.28 kb
#include <fstream>
using namespace std;
ifstream f("perechi2.in");
ofstream g("perechi2.out");
int n,a[10005],P[10005];
void Cerinta1()
{
    int i,cnt=1;
    for(i=2;i<=n;++i)
        if(a[i]!=a[i-1]) cnt++;
    if(cnt!=2||a[2]==a[3])
    {
        g<<"0\n";
        return ;
    }
    cnt=a[3]-a[2];
    g<<P[1]<<" "<<P[2]<<" "<<cnt<<"\n";
}
void Cerinta2()
{
    int i,ultim,v;
    ultim=n;
    for(i=1;i<n;i+=2)
    {
        v=a[ultim]-a[i];
        if(v>0)
        {
            a[i]+=v;
            a[i+1]+=v;
            g<<P[i]<<" "<<P[i+1]<<" "<<v<<"\n";
            a[++ultim]=a[i];
            P[ultim]=P[i];
            a[++ultim]=a[i+1];
            P[ultim]=P[i+1];
        }
    }
    for(;i<ultim;i+=2)
    {
        v=a[ultim]-a[i];
        if(v>0)
        {
            a[i]+=v;
            a[i+1]+=v;
            g<<P[i]<<" "<<P[i+1]<<" "<<v<<"\n";
        }
    }
}
int main()
{
    int i,j,C;
    f>>C>>n;
    for(i=1;i<=n;++i)
    {
        f>>a[i];
        P[i]=i;
    }
    for(i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
            if(a[i]>a[j])
            {
                swap(a[i],a[j]);
                swap(P[i],P[j]);
            }
    if(C==1) Cerinta1();
    else Cerinta2();
    g.close();
    return 0;
}