Cod sursa(job #1461274)
| Utilizator | Data | 15 iulie 2015 12:13:44 | |
|---|---|---|---|
| Problema | Divk | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<fstream>
#include<vector>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int v[500005];
vector<int> st;
int f[100005],n,k,a,b,i,sol;
int main(){
fin>>n>>k>>a>>b;
for(i=1;i<=n;i++){
fin>>v[i];
v[i]=v[i]+v[i-1];
}
for(i=1;i<=n;i++){
v[i]%=k;
}
for(i=1;i<=n;i++){
st.push_back( v[i] );
if(f[ v[i] ]!=0){
sol+=f[v[i]];
}
if(v[i]==0 && a==1) sol++;
f[v[i]]++;
if(st.size()==b+1){
if(f[st[0]]!=0) f[st[0]]--;
st.erase( st.begin() );
}
}
fout<<sol<<"\n";
return 0;
}
