Advertisement
rotti321

Untitled

Mar 8th, 2017
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5. const int maxn=1000002;
  6. ifstream f("summit.in");
  7. ofstream g("summit.out");
  8.  
  9. void citire(int a[],int s[],int n,int &m)
  10. {
  11.     int stop=0;
  12.  
  13.     for(int i=1;i<=n;i++)
  14.     {
  15.         f>>a[i];
  16.         if((long long)s[i-1] + a[i] < 2000000000)
  17.         {
  18.           s[i]=s[i-1]+a[i];
  19.         }
  20.         else
  21.         {
  22.             if(stop==0)
  23.             {
  24.                 stop=1;
  25.                 m=i-1;
  26.             }
  27.         }
  28.  
  29.     }
  30.     if(stop==0){m=n;}
  31. }
  32. int caut_binar(int a[],int st,int dr,int x)
  33. {
  34.     if(st>dr)
  35.     {
  36.         return 0; ///pozitie pt inserare
  37.     }
  38.     int mij=(st+dr)/2;  /// mij=st+(dr-st)/2;
  39.     if(x>a[mij]){
  40.         return caut_binar(a,mij+1,dr,x);
  41.     }
  42.     if(x<a[mij]){
  43.         return caut_binar(a,st,mij-1,x);
  44.     }
  45.     if(a[mij]==x){
  46.         return mij;
  47.     }
  48. }
  49. int main()
  50. {
  51.  
  52.     int n,x,m;
  53.     f>>n;
  54.     static int a[1000010], s[1000010];
  55.     s[0]=0;
  56.     citire(a,s,n,m);
  57.  
  58.     for(int i=1;i<=n;i++)
  59.     {
  60.  
  61.       g<<caut_binar(s,1,m,a[i])<<'\n';
  62.       //cout<<upper_bound(a+1,a+n+1,x)-a;
  63.      }
  64.  
  65.    // cout<<upper_bound(a+1,a+n+1,x)-a;
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement