Cod sursa(job #1209911)

Utilizator andreea1coolBobu Andreea andreea1cool Data 18 iulie 2014 20:47:07
Problema Oite Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
#include<vector>
#include<algorithm>
#include <fstream>

int n,i,j,k,v[1100],l,leftover,po;
const int maxp=9013;
std::vector<int> partial_sum[maxp],hx[maxp];

int main()
{
    std::ifstream in("oite.in");
    std::ofstream out("oite.out");
    in >> n >> l;
    for (i=1; i<=n; ++i) {
        in >> v[i];
    }
    std::sort(v+1,v+n+1);
    for(i=1;i<n;++i) {
        for(j=i+1;j<=n;++j)
        {
            po=(v[i]+v[j])%maxp;
            partial_sum[po].push_back((v[i]+v[j]));
            hx[po].push_back(i);
        }
    }
    
    int count = 0;
    for(i=1;i<n&&v[i]+v[1]<l/2;++i) {
      for(j=i+1;j<=n&&v[j]+v[i]<l/2;++j)
      {
        if(l>v[i]+v[j])
        {
          leftover=(l-v[i]-v[j])%maxp;
          for(k=0;k<partial_sum[leftover].size();++k) {
            if(j<hx[leftover][k]&&partial_sum[leftover][k]+v[i]+v[j]==l) {
              ++count;
            }
          }
        }
      }
    }
   
    out << count;
    return 0;
}