Cod sursa(job #979324)

Utilizator crisbodnarCristian Bodnar crisbodnar Data 1 august 2013 11:39:10
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("oite.in");
ofstream fout("oite.out");

const int N = 1026;
const int mod = 666013;

int C, L, sol, v[N];
vector <int> a[mod+1];

int Find(const int val)
{
    const int x = val % mod; int nr = 0;
    for(unsigned i=0; i<a[x].size(); i++)
        if(a[x][i] == val) nr++;
    return nr;
}

void Insert(const int val)
{
    const int x = val % mod;
    a[x].push_back(val);
}

inline bool OK(const char &x)
{
    return (x >= '0' && x <= '9');
}

int main()
{
    fin>>C>>L; fin.get(); char s[15000];
    fin.getline(s, 15000); int nr, k = 0;
    for(int j=0; s[j];)
        if(OK(s[j]))
        {
            nr = 0; k++;
            while(OK(s[j])) nr = nr * 10 + s[j] - '0', j++;
            v[k] = nr;
        }
        else j++;

    for(int i=2; i<C; i++)
    {
        for(int j=i+1; j<=C; j++)
            if(L-v[i]-v[j] > 0) sol += Find(L-v[i]-v[j]);

        for(int j=1; j<i; j++)
            Insert(v[i]+v[j]);
    }
    fout<<sol;
    return 0;
}