Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- #include <iterator>
- #include <math.h>
- #include <string.h>
- #include <map>
- #include <algorithm>
- using namespace std;
- ifstream in("summit.in");
- ofstream out("summit.out");
- int n,m;
- int v[1000001],aib[1000001];
- void BUILD(int poz, int val)
- {
- for(;poz<=n;poz+=poz&-poz)
- aib[poz]+=val;
- }
- int SUM(int poz)
- {
- int s=0;
- for(;poz;poz-=poz&-poz)
- s+=aib[poz];
- return s;
- }
- int BIN(int st, int dr, int val)
- {
- while(st<=dr)
- {
- int mij=(st+dr)/2;
- if(aib[mij]==val)
- return mij;
- if(aib[mij]>val)
- dr=mij-1;
- else
- st=mij+1;
- }
- return 0;
- }
- int main()
- {
- in>>n;
- for(int i=1; i<=n; i++)
- {
- in>>v[i];
- aib[i]=aib[i-1]+v[i];
- }
- for(int i=1; i<=n; i++)
- {
- out<<BIN(1,n,v[i])<<"\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement