Cod sursă (job #321824)

Utilizator avatar GeorgeA Andrei George GeorgeA IP ascuns
Problemă Domino Compilator cpp | 1,19 kb
Rundă Arhiva de probleme Status evaluat
Dată 7 nov. 2017 21:26:38 Scor 16
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in ("domino.in");
ofstream out ("domino.out");
struct dom {
short x1,x2,l,c;
};
dom v[10001];
bool ord (dom a,dom b)
{
    if (a.x1<b.x1)
        return false;
    else if (a.x1==b.x1)
    {
        if (a.x2<b.x2)
            return false;
        return true;
    }
    return true;
}
bool ord1 (dom a,dom b)
{
    if (a.c<b.c && a.x1!=0 && b.x1!=0)
        return true;
    else if (a.c>b.c && a.x1!=0 && b.x1!=0)
        return false;
}
int main()
{
    int n,k1,k2,i;
    in>>n>>k1>>k2;
    for (i=1;i<=n;i++)
    {
        in>>v[i].x1>>v[i].x2;
        v[i].l=0;
        v[i].c=i;
        if (v[i].x2>v[i].x1)
        {
            swap(v[i].x2,v[i].x1);
            v[i].l=1;
        }
    }
    sort (v+1,v+n+1,ord);
    i=0;
    int dif=n-k2+1;
    for (i=n;i>=dif;i--)
    {
        v[i].x1=0;
        v[i].x2=0;
    }
    i=k1+1;
    for (;i<=dif;i++)
    {
        if (v[i].x1==0)
            break;
        if (v[i].l==1)
            swap(v[i].x1,v[i].x2);
    }
    sort(v+1,v+dif,ord1);
    for (i=1;i<=dif-1;i++)
    {
        out<<v[i].x1<<v[i].x2;
    }
    return 0;
}