Mai intai trebuie sa te autentifici.
Cod sursa(job #1663211)
| Utilizator | Data | 25 martie 2016 17:20:23 | |
|---|---|---|---|
| Problema | Oite | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.91 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream f("oite.in");
ofstream g("oite.out");
const int modulo=4999;
vector <pair <int ,int> > H[modulo*3];
int n,i,j,k;
int a[1025];
long long suma,sol;
int query (int sum)
{
int r,k,siz;
r=sum%modulo+modulo;
siz=H[r].size();
for (k=0;k<siz;k++)
if (H[r][k].first==sum)
return H[r][k].second;
return 0;
}
void add (int sum)
{
int r,k,siz;
r=sum%modulo+modulo;
siz=H[r].size();
for (k=0;k<siz;k++)
if (H[r][k].first==sum)
{
H[r][k].second++;
return;
}
H[r].push_back(make_pair(sum,1));
}
int main()
{
f>>n>>suma;
for (i=1;i<=n;i++)
f>>a[i];
for (i=1;i<n;i++)
{
for (j=i+1;j<=n;j++)
sol+=query(suma-a[i]-a[j]);
for (j=1;j<i;j++)
add(a[i]+a[j]);
}
g<<sol;
return 0;
}
