Cod sursa(job #1709404)

Utilizator CBOSTorinoUPB Andrei Bercaru CBOSTorino Data 28 mai 2016 12:06:38
Problema Padure2 Scor 0
Compilator cpp Status done
Runda ONIS 2016 - Runda - 2 - ACM ICPC Romanian Programming Contest Marime 1.34 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

struct ciuperca {
    short x;
    short y;
};

bool compare(ciuperca c , ciuperca d){
    if (c.x == d.x)
        return c.y < d.y;
    return c.x < d.x;
}

    int drum_x[1000001];
    int drum_y[1000001];

int main () {


    ifstream f ("padure2.in");
    ofstream g ("padure2.out");

    int c , x_final , y_final , x , y , i , ji , ok , indice = 0;
    f>>x_final>>y_final;
    f>>c;
    ciuperca padure[c];

    for (i=0 ; i < c ; i++) {
        f >> padure[i].x >>padure[i].y;
    }
    sort (padure , padure + c , compare);

    drum_x[0] = 0; ok = 1;
    for(ji=1 ; ji<=y_final ; ji++)
        if (padure[indice].x == 1 && padure[indice].y == ji){
            if (!ok)
            {
                drum_x[ji] = 0; ok=0; 
            }
            indice++;
        }
        else {drum_x[ji] = 1;}

    for (i=2 ; i<=x_final ; i++){
        if (padure[indice].x == i && padure[indice].y == 1){
            drum_x[ji] = 0; indice++;
        }
        else drum_x[1] = 1;
        for (ji=2 ; ji<=y_final ; ji++){
            if (padure[indice].x == i && padure[indice].y == ji){
                indice++;
                drum_x[ji] = 0;
            }
            else drum_x[ji] = (drum_x[ji] + drum_x[ji-1])%2000003;
        }
    }

    g << drum_x[y_final] << endl;
    return 0;
}