Cod sursa(job #805843)

Utilizator bodyionitaIonita Bogdan Constantin bodyionita Data 1 noiembrie 2012 11:26:54
Problema Numerele lui Stirling Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.1 kb
#include <cstdio>
#include <algorithm>
using namespace std;
struct numere
{
    int c;
    int x;
    int y;
};
numere a[1002];
int nr,n,v[250],i,j;
bool cmp(numere a, numere b)
{
    if (a.c>b.c) return 0;
    if (a.x>b.x) return 0;
    if (a.y>b.y) return 0;
    return 1;
}
int main()
{
    freopen("stirling.in","r",stdin);
    freopen("stirling.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;i++)
    {
        scanf("%d%d%d",&a[i].c,&a[i].x,&a[i].y);
    }
    sort(a+1,a+n+1,cmp);
    v[1]=1;i=1;nr=1;
    if (a[1].x==1) {printf("%d\n",1);nr++;}
    while (a[nr].c==1)
    {
        i++;
        for (j=1;j<=i;j++)
        {
            v[j]=v[j-1]-(i-1)*v[j];
            if ((a[nr].x==i)&&(a[nr].y==j)) {nr++;printf("%d\n",v[j]);}
        }
    }
    for (j=1;j<=i;j++) v[i]=0;
    v[1]=1;i=1;nr=1;
    if (a[1].x==1) {printf("%d\n",1);nr++;}
    while (a[nr].c==2)
    {
        i++;
        for (j=1;j<=i;j++)
        {
            v[j]=v[j-1]+j*v[j];
            if ((a[nr].x==i)&&(a[nr].y==j)) {nr++;printf("%d\n",v[j]);}
        }
    }

    return 0;
}