Cod sursa(job #2351438)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 22 februarie 2019 13:09:53
Problema Curcubeu Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <fstream>
#include <set>
#include <iomanip>

using namespace std;

ifstream cin("curcubeu.in");
ofstream cout("curcubeu.out");

typedef long long ll;

const int N=(int)1e6+7;

int n;
int a[N];
int b[N];
int c[N];

set<int>s;

int ugar[N];

int main()
{
        cin>>n;
        cin>>a[1]>>b[1]>>c[1];
        for(int i=2;i<n;i++)
        {
                a[i]=a[i-1]*(ll)i%n;
                b[i]=b[i-1]*(ll)i%n;
                c[i]=c[i-1]*(ll)i%n;
        }
        for(int i=1;i<n;i++)
        {
                if(a[i]>b[i])
                {
                        swap(a[i],b[i]);
                }
        }
        for(int i=1;i<n;i++)
        {
                s.insert(i);
        }
        for(int i=n-1;i>=1;i--)
        {
                int st=a[i];
                int dr=b[i];
                int kol=c[i];
                while(s.size()>0)
                {
                        auto it=s.lower_bound(st);
                        if(it==s.end()) break;
                        if(*it>dr) break;
                        ugar[*it]=kol;
                        s.erase(it);
                }
        }
        for(int i=1;i<n;i++)
        {
                cout<<ugar[i]<<"\n";
        }
        return 0;
        for(int i=1;i<n;i++)
        {
                cout<<a[i]<<" "<<b[i]<<" "<<c[i]<<"\n";
        }
        return 0;
}