Cod sursă (job #237608)

Utilizator avatar georgerapeanu rapeanu george alexandru georgerapeanu IP ascuns
Problemă Domino Compilator cpp | 0,96 kb
Rundă Simulare olimpiada clasele 7/8 grea Status evaluat
Dată 20 apr. 2016 15:43:07 Scor 64
#include <cstdio>
#include <deque>
using namespace std;
FILE *f=fopen("domino.in","r");
FILE *g=fopen("domino.out","w");
deque <bool> rotit;
deque <int> D;
int E,R;
int N,i;
int a,b;
int nr;
bool ro;
int main()
{
    fscanf(f,"%d %d %d",&N,&R,&E);
    for(i=1;i<=N;i++)
    {
        fscanf(f,"%d %d",&a,&b);
        if(a*10+b<b*10+a&&R)
        {
            nr=b*10+a;
            R--;
            ro=1;
        }
        else
        {
            nr=a*10+b;
            ro=0;
        }
        while(!D.empty()&&nr>D.back()&&E)
        {
            E--;
            D.pop_back();
            if(rotit.back()==1)
                R++;
            rotit.pop_back();
        }
        D.push_back(nr);
        rotit.push_back(ro);
    }
    while(E)
    {D.pop_back();E--;}
    if(D.empty())
        fputc('0',g);
    while(!D.empty())
    {fprintf(g,"%d",D.front());D.pop_front();}
    fclose(f);
    fclose(g);
    return 0;
}